@thinkwise/testwise 0.2.103 → 0.2.111
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/artifact-builder/CustomActionBarGenerator.ts +210 -0
- package/artifact-builder/InterfaceGenerator.ts +4 -1
- package/artifact-builder/ScreenInterfaceRefiner.ts +7 -1
- package/artifact-builder/SubjectComponentGenerator.ts +7 -1
- package/artifact-builder/SubjectRegistration.ts +4 -1
- package/artifact-builder/TaskDataBuilder.ts +71 -0
- package/artifact-builder/helpers/DataRetriever.ts +11 -0
- package/artifact-builder/helpers/PipelinePaths.ts +5 -0
- package/artifact-builder/index.ts +2 -0
- package/components/action-bar/ActionBarObjects.ts +3 -1
- package/components/filter/FilterPopup.ts +77 -14
- package/components/filter/FilterPopupObjects.ts +25 -4
- package/components/grid/Grid.ts +40 -2
- package/components/grid/GridObjects.ts +18 -3
- package/components/pop-up/AllRowsPopUp.ts +4 -1
- package/controls/DateControl.ts +26 -13
- package/controls/DateControlObjects.ts +1 -1
- package/controls/FormComboBoxObjects.ts +2 -2
- package/controls/GridColumnControl.ts +10 -0
- package/dist/artifact-builder/CustomActionBarGenerator.d.ts +82 -0
- package/dist/artifact-builder/CustomActionBarGenerator.js +175 -0
- package/dist/artifact-builder/CustomActionBarGenerator.js.map +1 -0
- package/dist/artifact-builder/InterfaceGenerator.js +4 -1
- package/dist/artifact-builder/InterfaceGenerator.js.map +1 -1
- package/dist/artifact-builder/ScreenInterfaceRefiner.js +7 -1
- package/dist/artifact-builder/ScreenInterfaceRefiner.js.map +1 -1
- package/dist/artifact-builder/SubjectComponentGenerator.js +5 -1
- package/dist/artifact-builder/SubjectComponentGenerator.js.map +1 -1
- package/dist/artifact-builder/SubjectRegistration.js +4 -1
- package/dist/artifact-builder/SubjectRegistration.js.map +1 -1
- package/dist/artifact-builder/TaskDataBuilder.d.ts +21 -0
- package/dist/artifact-builder/TaskDataBuilder.js +60 -0
- package/dist/artifact-builder/TaskDataBuilder.js.map +1 -0
- package/dist/artifact-builder/helpers/DataRetriever.d.ts +2 -0
- package/dist/artifact-builder/helpers/DataRetriever.js +7 -0
- package/dist/artifact-builder/helpers/DataRetriever.js.map +1 -1
- package/dist/artifact-builder/helpers/PipelinePaths.d.ts +2 -0
- package/dist/artifact-builder/helpers/PipelinePaths.js +4 -0
- package/dist/artifact-builder/helpers/PipelinePaths.js.map +1 -1
- package/dist/artifact-builder/index.d.ts +2 -0
- package/dist/artifact-builder/index.js +2 -0
- package/dist/artifact-builder/index.js.map +1 -1
- package/dist/components/action-bar/ActionBarObjects.js +2 -1
- package/dist/components/action-bar/ActionBarObjects.js.map +1 -1
- package/dist/components/filter/FilterPopup.d.ts +50 -2
- package/dist/components/filter/FilterPopup.js +69 -15
- package/dist/components/filter/FilterPopup.js.map +1 -1
- package/dist/components/filter/FilterPopupObjects.d.ts +4 -2
- package/dist/components/filter/FilterPopupObjects.js +18 -4
- package/dist/components/filter/FilterPopupObjects.js.map +1 -1
- package/dist/components/grid/Grid.d.ts +22 -0
- package/dist/components/grid/Grid.js +36 -2
- package/dist/components/grid/Grid.js.map +1 -1
- package/dist/components/grid/GridObjects.d.ts +2 -0
- package/dist/components/grid/GridObjects.js +12 -2
- package/dist/components/grid/GridObjects.js.map +1 -1
- package/dist/components/pop-up/AllRowsPopUp.js +4 -1
- package/dist/components/pop-up/AllRowsPopUp.js.map +1 -1
- package/dist/controls/DateControl.d.ts +18 -10
- package/dist/controls/DateControl.js +21 -8
- package/dist/controls/DateControl.js.map +1 -1
- package/dist/controls/DateControlObjects.js +1 -1
- package/dist/controls/DateControlObjects.js.map +1 -1
- package/dist/controls/FormComboBoxObjects.js +2 -2
- package/dist/controls/FormComboBoxObjects.js.map +1 -1
- package/dist/controls/GridColumnControl.d.ts +2 -0
- package/dist/controls/GridColumnControl.js +6 -0
- package/dist/controls/GridColumnControl.js.map +1 -1
- package/dist/helpers/DateFormat.d.ts +69 -0
- package/dist/helpers/DateFormat.js +100 -0
- package/dist/helpers/DateFormat.js.map +1 -0
- package/dist/helpers/DateLocaleHelper.d.ts +17 -0
- package/dist/helpers/DateLocaleHelper.js +52 -0
- package/dist/helpers/DateLocaleHelper.js.map +1 -0
- package/dist/helpers/LoginHelper.js +2 -1
- package/dist/helpers/LoginHelper.js.map +1 -1
- package/dist/helpers/Poll.d.ts +24 -2
- package/dist/helpers/Poll.js +87 -5
- package/dist/helpers/Poll.js.map +1 -1
- package/dist/helpers/UserSimulationHelper.js +2 -1
- package/dist/helpers/UserSimulationHelper.js.map +1 -1
- package/dist/interfaces/ITabTask.d.ts +21 -0
- package/dist/interfaces/ITabTask.js +2 -0
- package/dist/interfaces/ITabTask.js.map +1 -0
- package/dist/page-overrides/FillOverride.js +0 -15
- package/dist/page-overrides/FillOverride.js.map +1 -1
- package/dist/services/IndiciumApi.service.d.ts +7 -0
- package/dist/services/IndiciumApi.service.js +19 -0
- package/dist/services/IndiciumApi.service.js.map +1 -1
- package/dist/types/PollTypes.d.ts +5 -0
- package/helpers/DateFormat.ts +123 -0
- package/helpers/DateLocaleHelper.ts +57 -0
- package/helpers/LoginHelper.ts +2 -1
- package/helpers/Poll.ts +108 -5
- package/helpers/UserSimulationHelper.ts +2 -1
- package/interfaces/ITabTask.ts +21 -0
- package/package.json +4 -2
- package/page-overrides/FillOverride.ts +0 -18
- package/promptCredentials.js +124 -124
- package/scripts/checkPackageContents.js +39 -0
- package/scripts/sync.js +14 -0
- package/services/IndiciumApi.service.ts +21 -0
- package/types/PollTypes.ts +5 -0
|
@@ -19,14 +19,29 @@ export class GridObjects extends BaseComponentObjects {
|
|
|
19
19
|
|
|
20
20
|
public rowByRowId = (rowIdPattern: string) => this.context.locator(`[role="row"][row-id$="|${rowIdPattern}"]`);
|
|
21
21
|
|
|
22
|
+
public cellByRowIndexAndColumnId = (row: number, colId: string) =>
|
|
23
|
+
this.rowByIndex(row).locator(`[col-id="${colId}"]`);
|
|
24
|
+
|
|
22
25
|
public cellByValue = (value: RegExp) =>
|
|
23
26
|
this.context.locator('[role="button"]', {
|
|
24
27
|
hasText: value
|
|
25
28
|
});
|
|
26
29
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
// Body data rows only. `.ag-row` already excludes the header (which is `.ag-header-row`),
|
|
31
|
+
// and the `b-` row-index negation excludes the pinned bottom summary row while keeping
|
|
32
|
+
// pinned TOP rows, since the in-progress new row is what add-row flows count.
|
|
33
|
+
public rows = () => this.context.locator('.ag-row:not([row-index^="b-"])');
|
|
34
|
+
|
|
35
|
+
// Scoped to body rows so AG Grid's pinned bottom summary row is not read as data.
|
|
36
|
+
// Pinned bottom rows carry `row-index="b-<n>"`; negating that prefix leaves pinned
|
|
37
|
+
// TOP rows (the in-progress new row) in place. Do not swap this for
|
|
38
|
+
// `:not(.ag-row-pinned)` — that covers top and bottom alike. See
|
|
39
|
+
// tests/components/grid/GridObjects.cellsByColumnId.test.ts
|
|
40
|
+
public cellsByColumnId = (colId: string) =>
|
|
41
|
+
this.context.locator(`.ag-row:not([row-index^="b-"]) [col-id="${colId}"] .value-renderer`);
|
|
42
|
+
|
|
43
|
+
public summaryCellsByColumnId = (colId: string) =>
|
|
44
|
+
this.context.locator(`.ag-floating-bottom [col-id="${colId}"] .value-renderer`);
|
|
30
45
|
|
|
31
46
|
public columnByRowLocator = (rowLocator: Locator) => rowLocator.locator('.ag-cell');
|
|
32
47
|
|
|
@@ -28,7 +28,10 @@ export class AllRowsPopup {
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
async waitForOpen(): Promise<void> {
|
|
31
|
-
await pollUntil(() => this._allRowsPopupObjects.anchor(this.deletePopup).isVisible(), {
|
|
31
|
+
await pollUntil(() => this._allRowsPopupObjects.anchor(this.deletePopup).isVisible(), {
|
|
32
|
+
predicate: Boolean,
|
|
33
|
+
description: 'the delete-all-rows popup to become visible'
|
|
34
|
+
});
|
|
32
35
|
}
|
|
33
36
|
|
|
34
37
|
public selectedRowsRadioButton = (): Locator => this._allRowsPopupObjects.selectedRowsRadioButton();
|
package/controls/DateControl.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
/* biome-ignore-all lint/suspicious/noExplicitAny: reason42 */
|
|
3
3
|
import type { Locator } from '@playwright/test';
|
|
4
|
+
import { isIsoDateTime, isoToLocaleDigits } from '../helpers/DateFormat.js';
|
|
5
|
+
import { getDateLocale } from '../helpers/DateLocaleHelper.js';
|
|
4
6
|
import { DateControlObjects } from './DateControlObjects.js';
|
|
5
7
|
|
|
6
8
|
/**
|
|
@@ -12,11 +14,11 @@ import { DateControlObjects } from './DateControlObjects.js';
|
|
|
12
14
|
* field on the form:
|
|
13
15
|
*
|
|
14
16
|
* ```ts
|
|
15
|
-
* // Fill accepts
|
|
16
|
-
* //
|
|
17
|
-
*
|
|
18
|
-
* await subject.form.hireDateField.fill('03
|
|
19
|
-
* await subject.form.hireDateField.fill('
|
|
17
|
+
* // Fill accepts a canonical ISO date. Testwise reads the app's date locale
|
|
18
|
+
* // and types the digits in the picker's expected order, so the same value
|
|
19
|
+
* // enters the same real date under any locale:
|
|
20
|
+
* await subject.form.hireDateField.fill('2025-03-15'); // 15 March 2025
|
|
21
|
+
* await subject.form.hireDateField.fill('2025-03-15 09:46:09'); // with time
|
|
20
22
|
*
|
|
21
23
|
* const raw = await subject.form.hireDateField.inputValue();
|
|
22
24
|
* await subject.form.hireDateField.clear();
|
|
@@ -42,17 +44,28 @@ export class DateControl implements IDateControlCore {
|
|
|
42
44
|
}
|
|
43
45
|
|
|
44
46
|
/**
|
|
45
|
-
* Enter a date value
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
47
|
+
* Enter a date value from a canonical ISO string (`YYYY-MM-DD` or
|
|
48
|
+
* `YYYY-MM-DD HH:mm:ss`). Testwise reads the app's active date locale, reorders
|
|
49
|
+
* the day/month/year digits to the picker's expected order, and types them
|
|
50
|
+
* sequentially so the picker applies its own formatting. This means the same
|
|
51
|
+
* ISO value enters the same real date regardless of the configured locale.
|
|
52
|
+
*
|
|
53
|
+
* For example, `"2025-01-01"` types `01012025` under a DD/MM/YYYY locale,
|
|
54
|
+
* `01012025` under MM/DD/YYYY, and `20250101` under YYYY/MM/DD.
|
|
55
|
+
*
|
|
56
|
+
* Any other value (e.g. `"15/03/2025"`) is typed the way it was before ISO
|
|
57
|
+
* support: its digits in the order given, separators removed. That only enters
|
|
58
|
+
* the intended date under the locale it was written for, so prefer ISO.
|
|
59
|
+
* @param value - Canonical ISO date or date-time string (recommended), or a date written in the picker's own order.
|
|
50
60
|
*/
|
|
51
61
|
public async fill(value: string): Promise<void> {
|
|
52
|
-
const
|
|
62
|
+
const input = this._objects.fieldInput();
|
|
63
|
+
const digits = isIsoDateTime(value)
|
|
64
|
+
? isoToLocaleDigits(value, await getDateLocale(input.page()))
|
|
65
|
+
: value.replace(/\D/g, '');
|
|
53
66
|
|
|
54
|
-
await
|
|
55
|
-
await
|
|
67
|
+
await input.click();
|
|
68
|
+
await input.pressSequentially(digits);
|
|
56
69
|
}
|
|
57
70
|
|
|
58
71
|
/**
|
|
@@ -9,7 +9,7 @@ export class DateControlObjects {
|
|
|
9
9
|
this._id = id;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
public fieldInput = (): Locator => this.
|
|
12
|
+
public fieldInput = (): Locator => this.dateField().locator('input');
|
|
13
13
|
|
|
14
14
|
public dateField = (): Locator => this._context.getByTestId(`form-field__${this._id}`);
|
|
15
15
|
}
|
|
@@ -15,8 +15,8 @@ export class FormComboBoxObjects {
|
|
|
15
15
|
this._context.page().getByTestId(`form-field__${this._id}__select__options-list`);
|
|
16
16
|
|
|
17
17
|
public option = (optionText: string): Locator => {
|
|
18
|
-
const
|
|
19
|
-
return this.autoCompleteMenu().getByTestId(`form-field__${this._id}__select__${
|
|
18
|
+
const optionSlug = optionText.toLowerCase().replace(/\s+/g, '-');
|
|
19
|
+
return this.autoCompleteMenu().getByTestId(`form-field__${this._id}__select__${optionSlug}__text`);
|
|
20
20
|
};
|
|
21
21
|
|
|
22
22
|
public clearButton = (): Locator => this.field().locator('Button[aria-label="Clear"]');
|
|
@@ -33,6 +33,8 @@ export type IGridColumnControlCore = {
|
|
|
33
33
|
getColumnHeader(): Promise<Locator>;
|
|
34
34
|
getCellByExactValue(value: string): Locator;
|
|
35
35
|
getCellValues(): Promise<string[]>;
|
|
36
|
+
getSummaryCell(): Locator;
|
|
37
|
+
getSummaryValue(): Promise<string | null>;
|
|
36
38
|
filterByColumnValueExcelStyle(value: string, deselectAll?: boolean): Promise<void>;
|
|
37
39
|
openExcelStyleFilterPopup(): Promise<void>;
|
|
38
40
|
};
|
|
@@ -65,6 +67,14 @@ class GridColumnControl implements IGridColumnControlCore {
|
|
|
65
67
|
return await this._grid.getCellValuesByColId(this._id);
|
|
66
68
|
}
|
|
67
69
|
|
|
70
|
+
public getSummaryCell(): Locator {
|
|
71
|
+
return this._grid.getSummaryCellByColId(this._id);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
public async getSummaryValue(): Promise<string | null> {
|
|
75
|
+
return await this._grid.getSummaryValueByColId(this._id);
|
|
76
|
+
}
|
|
77
|
+
|
|
68
78
|
public async filterByColumnValueExcelStyle(value: string, deselectAll?: boolean): Promise<void> {
|
|
69
79
|
await this._grid.filterByColumnValueExcelStyle(this._objects.columnHeader(), value, deselectAll);
|
|
70
80
|
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { PipelinePaths } from './helpers/PipelinePaths.js';
|
|
2
|
+
/**
|
|
3
|
+
* **Pipeline Step 6.5** — For each subject+variant that has qualifying task
|
|
4
|
+
* buttons (written by `TaskDataBuilder`), generates a subject-specific
|
|
5
|
+
* `ActionBar` subclass with a typed getter per task, then patches the
|
|
6
|
+
* already-generated subject class file(s) to use that subclass instead of
|
|
7
|
+
* the base `ActionBar`.
|
|
8
|
+
*
|
|
9
|
+
* **Why a separate step (not baked into `SubjectGenerator`):**
|
|
10
|
+
* `SubjectGenerator` and `SubjectClassModelBuilder` run pipeline checks
|
|
11
|
+
* against the known component lists (`coreComponents`, `screenComponents`).
|
|
12
|
+
* A dynamically named type like `EmployeeEditable1ActionBar` is not in those
|
|
13
|
+
* lists and would break those checks. Running as a post-step lets the normal
|
|
14
|
+
* pipeline complete cleanly, then applies the swap after all validation has
|
|
15
|
+
* passed.
|
|
16
|
+
*
|
|
17
|
+
* **Generated file:** `test-artifacts/subjects/<SubjectFolder>/<ClassName>.ts`
|
|
18
|
+
* where `ClassName = <SubjectFolderPascal><VariantPascal>ActionBar`.
|
|
19
|
+
* Example: subject `employee`, variant `editable1` → `EmployeeEditable1ActionBar.ts`
|
|
20
|
+
*
|
|
21
|
+
* **Patching:** For each screen context (Main, Detail, Popup, Zoom) of a
|
|
22
|
+
* subject+variant with tasks, the generated `<ClassName>.ts` subject class is
|
|
23
|
+
* updated to:
|
|
24
|
+
* - Import the custom ActionBar instead of `ActionBar` from components.
|
|
25
|
+
* - Declare the `actionBar` property with the custom type.
|
|
26
|
+
* - Instantiate the custom class in the constructor.
|
|
27
|
+
*
|
|
28
|
+
* **Subject folder index.ts:** After generating each custom ActionBar file,
|
|
29
|
+
* the subject folder's `index.ts` barrel is updated to re-export it.
|
|
30
|
+
*
|
|
31
|
+
* **When it runs:** Step 6.5 of `testwise sync`, after `SubjectGenerator`
|
|
32
|
+
* (which writes and indexes subject class files) and before `SubjectRegistration`.
|
|
33
|
+
*/
|
|
34
|
+
export declare class CustomActionBarGenerator {
|
|
35
|
+
private readonly _paths;
|
|
36
|
+
private readonly _namingHandler;
|
|
37
|
+
private readonly _dataRetriever;
|
|
38
|
+
constructor(paths?: PipelinePaths);
|
|
39
|
+
run(): void;
|
|
40
|
+
/**
|
|
41
|
+
* Writes a new `<ClassName>.ts` file to the subject's `Components/` subfolder.
|
|
42
|
+
* The class extends `ActionBar` and adds one getter per qualifying task ID.
|
|
43
|
+
*/
|
|
44
|
+
private generateCustomActionBarFile;
|
|
45
|
+
/**
|
|
46
|
+
* Appends the custom ActionBar export to the subject folder's `index.ts` barrel.
|
|
47
|
+
* `SubjectGenerator.indexGeneratedSubjects()` runs before this step, so the
|
|
48
|
+
* barrel already exists but does not yet include the custom ActionBar file.
|
|
49
|
+
*/
|
|
50
|
+
private appendToSubjectIndex;
|
|
51
|
+
/**
|
|
52
|
+
* Reads the generated subject class file for one screen context and applies
|
|
53
|
+
* three targeted text replacements to swap in the custom ActionBar type.
|
|
54
|
+
*/
|
|
55
|
+
private patchSubjectClassFile;
|
|
56
|
+
/**
|
|
57
|
+
* Removes `ActionBar` and `CustomActionBar` from the core components import
|
|
58
|
+
* and inserts a subject-local import for the generated subclass.
|
|
59
|
+
*/
|
|
60
|
+
private swapActionBarImport;
|
|
61
|
+
/**
|
|
62
|
+
* Converts a Thinkwise task ID (kebab-case or snake_case) to a camelCase getter
|
|
63
|
+
* name with a `Button` suffix for consistent, discoverable naming.
|
|
64
|
+
*
|
|
65
|
+
* Examples:
|
|
66
|
+
* - `"supplier-item-add"` → `"supplierItemAddButton"`
|
|
67
|
+
* - `"pf_run_prefilter_mand_on"` → `"pfRunPrefilterMandOnButton"`
|
|
68
|
+
* - `"deactivate"` → `"deactivateButton"`
|
|
69
|
+
*/
|
|
70
|
+
private taskIdToGetterName;
|
|
71
|
+
/**
|
|
72
|
+
* Converts a Thinkwise task ID to the id the action bar renders in its
|
|
73
|
+
* `actionbar__task__<id>` test id: lowercase, with underscores replaced by
|
|
74
|
+
* hyphens. This is the same model-to-DOM rule the pipeline applies to column
|
|
75
|
+
* and screen type ids (see `SelectorBuilder`).
|
|
76
|
+
*
|
|
77
|
+
* Examples:
|
|
78
|
+
* - `"pf_run_prefilter_mand_on"` → `"pf-run-prefilter-mand-on"`
|
|
79
|
+
* - `"supplier-item-add"` → `"supplier-item-add"` (unchanged)
|
|
80
|
+
*/
|
|
81
|
+
private taskIdToTestId;
|
|
82
|
+
}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import * as fs from 'node:fs';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import { DataRetriever } from './helpers/DataRetriever.js';
|
|
4
|
+
import { NamingHandler } from './helpers/NamingHandler.js';
|
|
5
|
+
import { PipelinePaths } from './helpers/PipelinePaths.js';
|
|
6
|
+
/**
|
|
7
|
+
* **Pipeline Step 6.5** — For each subject+variant that has qualifying task
|
|
8
|
+
* buttons (written by `TaskDataBuilder`), generates a subject-specific
|
|
9
|
+
* `ActionBar` subclass with a typed getter per task, then patches the
|
|
10
|
+
* already-generated subject class file(s) to use that subclass instead of
|
|
11
|
+
* the base `ActionBar`.
|
|
12
|
+
*
|
|
13
|
+
* **Why a separate step (not baked into `SubjectGenerator`):**
|
|
14
|
+
* `SubjectGenerator` and `SubjectClassModelBuilder` run pipeline checks
|
|
15
|
+
* against the known component lists (`coreComponents`, `screenComponents`).
|
|
16
|
+
* A dynamically named type like `EmployeeEditable1ActionBar` is not in those
|
|
17
|
+
* lists and would break those checks. Running as a post-step lets the normal
|
|
18
|
+
* pipeline complete cleanly, then applies the swap after all validation has
|
|
19
|
+
* passed.
|
|
20
|
+
*
|
|
21
|
+
* **Generated file:** `test-artifacts/subjects/<SubjectFolder>/<ClassName>.ts`
|
|
22
|
+
* where `ClassName = <SubjectFolderPascal><VariantPascal>ActionBar`.
|
|
23
|
+
* Example: subject `employee`, variant `editable1` → `EmployeeEditable1ActionBar.ts`
|
|
24
|
+
*
|
|
25
|
+
* **Patching:** For each screen context (Main, Detail, Popup, Zoom) of a
|
|
26
|
+
* subject+variant with tasks, the generated `<ClassName>.ts` subject class is
|
|
27
|
+
* updated to:
|
|
28
|
+
* - Import the custom ActionBar instead of `ActionBar` from components.
|
|
29
|
+
* - Declare the `actionBar` property with the custom type.
|
|
30
|
+
* - Instantiate the custom class in the constructor.
|
|
31
|
+
*
|
|
32
|
+
* **Subject folder index.ts:** After generating each custom ActionBar file,
|
|
33
|
+
* the subject folder's `index.ts` barrel is updated to re-export it.
|
|
34
|
+
*
|
|
35
|
+
* **When it runs:** Step 6.5 of `testwise sync`, after `SubjectGenerator`
|
|
36
|
+
* (which writes and indexes subject class files) and before `SubjectRegistration`.
|
|
37
|
+
*/
|
|
38
|
+
export class CustomActionBarGenerator {
|
|
39
|
+
constructor(paths) {
|
|
40
|
+
this._paths = paths ?? new PipelinePaths();
|
|
41
|
+
this._namingHandler = new NamingHandler();
|
|
42
|
+
this._dataRetriever = new DataRetriever(this._paths);
|
|
43
|
+
}
|
|
44
|
+
run() {
|
|
45
|
+
const tabTasks = this._dataRetriever.getTabTasks();
|
|
46
|
+
if (tabTasks.length === 0)
|
|
47
|
+
return;
|
|
48
|
+
const subjects = this._dataRetriever.getSubjectsToBuild();
|
|
49
|
+
const taskMap = new Map(tabTasks.map((t) => [`${t.subject}__${t.variant}`, t]));
|
|
50
|
+
// Track which subject+variant combos already have a generated ActionBar file
|
|
51
|
+
const generatedActionBars = new Set();
|
|
52
|
+
for (const subject of subjects) {
|
|
53
|
+
const key = `${subject.subject}__${subject.variant}`;
|
|
54
|
+
const taskEntry = taskMap.get(key);
|
|
55
|
+
if (!taskEntry || taskEntry.tasks.length === 0)
|
|
56
|
+
continue;
|
|
57
|
+
const subjectFolderName = this._namingHandler.toSubjectPascalCase(subject.subject);
|
|
58
|
+
const variantPascal = subject.variant ? this._namingHandler.toPascalCase(subject.variant) : '';
|
|
59
|
+
const customActionBarClassName = `${subjectFolderName}${variantPascal}ActionBar`;
|
|
60
|
+
if (!generatedActionBars.has(key)) {
|
|
61
|
+
this.generateCustomActionBarFile(subjectFolderName, customActionBarClassName, taskEntry.tasks);
|
|
62
|
+
this.appendToSubjectIndex(subjectFolderName, customActionBarClassName);
|
|
63
|
+
generatedActionBars.add(key);
|
|
64
|
+
}
|
|
65
|
+
this.patchSubjectClassFile(subject, subjectFolderName, customActionBarClassName);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Writes a new `<ClassName>.ts` file to the subject's `Components/` subfolder.
|
|
70
|
+
* The class extends `ActionBar` and adds one getter per qualifying task ID.
|
|
71
|
+
*/
|
|
72
|
+
generateCustomActionBarFile(subjectFolderName, className, taskIds) {
|
|
73
|
+
const componentsFolderPath = this._paths.subjectComponentsFolder(subjectFolderName);
|
|
74
|
+
if (!fs.existsSync(this._paths.subjectFolder(subjectFolderName)))
|
|
75
|
+
return;
|
|
76
|
+
if (!fs.existsSync(componentsFolderPath)) {
|
|
77
|
+
fs.mkdirSync(componentsFolderPath, { recursive: true });
|
|
78
|
+
}
|
|
79
|
+
const getters = taskIds
|
|
80
|
+
.map((taskId) => {
|
|
81
|
+
const getterName = this.taskIdToGetterName(taskId);
|
|
82
|
+
return ` get ${getterName}(): Locator {\n return this.getTaskButtonById('${this.taskIdToTestId(taskId)}');\n }`;
|
|
83
|
+
})
|
|
84
|
+
.join('\n\n');
|
|
85
|
+
const content = [
|
|
86
|
+
`import type { Locator } from '@playwright/test';`,
|
|
87
|
+
`import { ActionBar } from '../../../../components/index.js';`,
|
|
88
|
+
``,
|
|
89
|
+
`export class ${className} extends ActionBar {`,
|
|
90
|
+
getters,
|
|
91
|
+
`}`,
|
|
92
|
+
``
|
|
93
|
+
].join('\n');
|
|
94
|
+
fs.writeFileSync(path.join(componentsFolderPath, `${className}.ts`), content, 'utf-8');
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Appends the custom ActionBar export to the subject folder's `index.ts` barrel.
|
|
98
|
+
* `SubjectGenerator.indexGeneratedSubjects()` runs before this step, so the
|
|
99
|
+
* barrel already exists but does not yet include the custom ActionBar file.
|
|
100
|
+
*/
|
|
101
|
+
appendToSubjectIndex(subjectFolderName, className) {
|
|
102
|
+
const indexPath = path.join(this._paths.subjectFolder(subjectFolderName), 'index.ts');
|
|
103
|
+
if (!fs.existsSync(indexPath))
|
|
104
|
+
return;
|
|
105
|
+
const exportLine = `export { ${className} } from './Components/${className}.js';`;
|
|
106
|
+
const existing = fs.readFileSync(indexPath, 'utf-8');
|
|
107
|
+
if (existing.includes(exportLine))
|
|
108
|
+
return;
|
|
109
|
+
fs.writeFileSync(indexPath, `${existing}\n${exportLine}`, 'utf-8');
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Reads the generated subject class file for one screen context and applies
|
|
113
|
+
* three targeted text replacements to swap in the custom ActionBar type.
|
|
114
|
+
*/
|
|
115
|
+
patchSubjectClassFile(subject, subjectFolderName, customActionBarClassName) {
|
|
116
|
+
const className = this._namingHandler.generateSubjectClassName(subject);
|
|
117
|
+
const filePath = path.join(this._paths.subjectFolder(subjectFolderName), `${className}.ts`);
|
|
118
|
+
if (!fs.existsSync(filePath))
|
|
119
|
+
return;
|
|
120
|
+
let content = fs.readFileSync(filePath, 'utf-8');
|
|
121
|
+
content = this.swapActionBarImport(content, customActionBarClassName);
|
|
122
|
+
content = content.split(': ActionBar').join(`: ${customActionBarClassName}`);
|
|
123
|
+
content = content.split(': CustomActionBar').join(`: ${customActionBarClassName}`);
|
|
124
|
+
content = content.split('new ActionBar(').join(`new ${customActionBarClassName}(`);
|
|
125
|
+
content = content.split('new CustomActionBar(').join(`new ${customActionBarClassName}(`);
|
|
126
|
+
fs.writeFileSync(filePath, content, 'utf-8');
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Removes `ActionBar` and `CustomActionBar` from the core components import
|
|
130
|
+
* and inserts a subject-local import for the generated subclass.
|
|
131
|
+
*/
|
|
132
|
+
swapActionBarImport(content, customActionBarClassName) {
|
|
133
|
+
const customImport = `import { ${customActionBarClassName} } from './Components/${customActionBarClassName}.js';`;
|
|
134
|
+
// Remove ActionBar / CustomActionBar from the components barrel import
|
|
135
|
+
content = content.replace(/^import \{ ([^}]+) \} from '\.\.\/\.\.\/\.\.\/components\/index\.js';$/m, (_, imports) => {
|
|
136
|
+
const remaining = imports
|
|
137
|
+
.split(',')
|
|
138
|
+
.map((i) => i.trim())
|
|
139
|
+
.filter((i) => i !== 'ActionBar' && i !== 'CustomActionBar');
|
|
140
|
+
if (remaining.length === 0)
|
|
141
|
+
return '';
|
|
142
|
+
return `import { ${remaining.join(', ')} } from '../../../components/index.js';`;
|
|
143
|
+
});
|
|
144
|
+
// Insert the subject-local import before the @playwright/test import line
|
|
145
|
+
content = content.replace(/^(import type \{ Page \} from '@playwright\/test';)/m, `${customImport}\n$1`);
|
|
146
|
+
return content;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Converts a Thinkwise task ID (kebab-case or snake_case) to a camelCase getter
|
|
150
|
+
* name with a `Button` suffix for consistent, discoverable naming.
|
|
151
|
+
*
|
|
152
|
+
* Examples:
|
|
153
|
+
* - `"supplier-item-add"` → `"supplierItemAddButton"`
|
|
154
|
+
* - `"pf_run_prefilter_mand_on"` → `"pfRunPrefilterMandOnButton"`
|
|
155
|
+
* - `"deactivate"` → `"deactivateButton"`
|
|
156
|
+
*/
|
|
157
|
+
taskIdToGetterName(taskId) {
|
|
158
|
+
const camel = taskId.replace(/[-_]([a-z0-9])/g, (_, c) => c.toUpperCase());
|
|
159
|
+
return `${camel}Button`;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Converts a Thinkwise task ID to the id the action bar renders in its
|
|
163
|
+
* `actionbar__task__<id>` test id: lowercase, with underscores replaced by
|
|
164
|
+
* hyphens. This is the same model-to-DOM rule the pipeline applies to column
|
|
165
|
+
* and screen type ids (see `SelectorBuilder`).
|
|
166
|
+
*
|
|
167
|
+
* Examples:
|
|
168
|
+
* - `"pf_run_prefilter_mand_on"` → `"pf-run-prefilter-mand-on"`
|
|
169
|
+
* - `"supplier-item-add"` → `"supplier-item-add"` (unchanged)
|
|
170
|
+
*/
|
|
171
|
+
taskIdToTestId(taskId) {
|
|
172
|
+
return taskId.toLowerCase().replace(/_/g, '-');
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=CustomActionBarGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomActionBarGenerator.js","sourceRoot":"","sources":["../../artifact-builder/CustomActionBarGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -77,7 +77,10 @@ export class InterfaceGenerator {
|
|
|
77
77
|
rendererOptions: { 'just-types': 'true', 'nice-property-names': 'true' }
|
|
78
78
|
});
|
|
79
79
|
let updatedContent = result.lines.join('\n');
|
|
80
|
-
|
|
80
|
+
// Match the whole name quicktype gave the interface, up to whitespace, `{` or a type parameter.
|
|
81
|
+
// `\w+` stopped at the first non-ASCII letter, so a screen type such as "Algemeen hiërarchie"
|
|
82
|
+
// left the tail of the old name behind and the generated file did not compile.
|
|
83
|
+
updatedContent = updatedContent.replace(/interface\s+[^\s{<]+/, `interface ${correctInterfaceName}`);
|
|
81
84
|
const formattedContent = await prettier.format(updatedContent, {
|
|
82
85
|
parser: 'typescript',
|
|
83
86
|
singleQuote: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InterfaceGenerator.js","sourceRoot":"","sources":["../../artifact-builder/InterfaceGenerator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"InterfaceGenerator.js","sourceRoot":"","sources":["../../artifact-builder/InterfaceGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -118,7 +118,13 @@ export class ScreenInterfaceRefiner {
|
|
|
118
118
|
return interfacesToRemove;
|
|
119
119
|
}
|
|
120
120
|
findInterfaces(content) {
|
|
121
|
-
|
|
121
|
+
// `\w` is ASCII-only. A screen type such as "Algemeen hiërarchie" gives the screen interface a
|
|
122
|
+
// non-ASCII name, which `\w+` skipped, so the first component placeholder was taken for the screen.
|
|
123
|
+
// `pascalCase` builds that name from letters, digits and `_`, and changing the case of a few letters
|
|
124
|
+
// adds a separate mark (`\p{M}`): Turkish "İ" lower-cases to "i" plus U+0307. The rename in
|
|
125
|
+
// `InterfaceGenerator` matches any character up to whitespace, `{` or `<`; this pattern lists the
|
|
126
|
+
// characters instead, because `getPlaceholderInterfaces()` puts the names it finds into a RegExp.
|
|
127
|
+
const interfaceRegex = /export interface ([\p{L}\p{M}\p{N}_]+) \{[\s\S]*?\}/gu;
|
|
122
128
|
const interfaces = [];
|
|
123
129
|
let match = interfaceRegex.exec(content);
|
|
124
130
|
while (match !== null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScreenInterfaceRefiner.js","sourceRoot":"","sources":["../../artifact-builder/ScreenInterfaceRefiner.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ScreenInterfaceRefiner.js","sourceRoot":"","sources":["../../artifact-builder/ScreenInterfaceRefiner.ts"],"names":[],"mappings":"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"}
|
|
@@ -69,7 +69,11 @@ export class SubjectComponentGenerator {
|
|
|
69
69
|
const componentName = meta.componentType;
|
|
70
70
|
const componentFile = { content: fs.readFileSync(componentDirPath, 'utf-8') };
|
|
71
71
|
componentFile.content = refineComponentInterface(componentFile.content, componentName);
|
|
72
|
-
|
|
72
|
+
// The interface is named after the subject, and a subject id can have any letter: "algemeen_hiërarchie" gives
|
|
73
|
+
// `AlgemeenHiërarchieForm`. `\w+` is ASCII-only, so such a component got no class, and the subject class that
|
|
74
|
+
// imports it did not compile. Same characters as `ScreenInterfaceRefiner.findInterfaces()`, including the mark
|
|
75
|
+
// (`\p{M}`) that changing case adds to a few letters. They are listed because the name goes into a RegExp below.
|
|
76
|
+
const interfaceMatches = componentFile.content.match(/export interface ([\p{L}\p{M}\p{N}_]+) extends/u);
|
|
73
77
|
if (interfaceMatches) {
|
|
74
78
|
const mainInterface = interfaceMatches[1];
|
|
75
79
|
const matchingProperties = this.getPropertyNamesFromInterface(componentFile, mainInterface);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubjectComponentGenerator.js","sourceRoot":"","sources":["../../artifact-builder/SubjectComponentGenerator.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAGlC,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEvF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,yBAAyB;IAQpC,YAAY,KAAqB;QAC/B,IAAI,CAAC,MAAM,GAAG,KAAK,IAAI,IAAI,aAAa,EAAE,CAAC;QAC3C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC/C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAC7C,IAAI,CAAC,gBAAgB,GAAG,IAAI,eAAe,EAAE,CAAC;QAC9C,IAAI,CAAC,cAAc,GAAG,IAAI,aAAa,EAAE,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,IAAI,0BAA0B,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAClG,CAAC;IAEM,GAAG;QACR,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACjC,CAAC;IAEO,oBAAoB;QAC1B,OAAO,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YAC7D,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7E,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,cAAc,CAAC,iBAAyB;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,QAAQ,YAAY,CAAC,CAAC;QAC5E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAyB,CAAC;IAChF,CAAC;IAEO,uBAAuB;QAC7B,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAEnD,cAAc,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE;YACvC,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,aAAa,aAAa,CAAC,CAAC;YAE9F,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,WAAW,EAAE;gBAAE,OAAO;YAEnG,MAAM,cAAc,GAAG,EAAE,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;YAE3D,cAAc,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE;gBACvC,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;gBAChD,IAAI,CAAC,IAAI;oBAAE,OAAO;gBAElB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,gBAAwB,EAAE,IAA0B;QACjE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC;YAAE,OAAO;QAE7C,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,MAAM,aAAa,GAAwB,EAAE,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,EAAE,CAAC;QAEnG,aAAa,CAAC,OAAO,GAAG,wBAAwB,CAAC,aAAa,CAAC,OAAO,EAAE,aAAkC,CAAC,CAAC;QAE5G,MAAM,gBAAgB,GAA4B,aAAa,CAAC,OAAO,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"SubjectComponentGenerator.js","sourceRoot":"","sources":["../../artifact-builder/SubjectComponentGenerator.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAGlC,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEvF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,yBAAyB;IAQpC,YAAY,KAAqB;QAC/B,IAAI,CAAC,MAAM,GAAG,KAAK,IAAI,IAAI,aAAa,EAAE,CAAC;QAC3C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC/C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAC7C,IAAI,CAAC,gBAAgB,GAAG,IAAI,eAAe,EAAE,CAAC;QAC9C,IAAI,CAAC,cAAc,GAAG,IAAI,aAAa,EAAE,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,IAAI,0BAA0B,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAClG,CAAC;IAEM,GAAG;QACR,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACjC,CAAC;IAEO,oBAAoB;QAC1B,OAAO,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YAC7D,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7E,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,cAAc,CAAC,iBAAyB;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,QAAQ,YAAY,CAAC,CAAC;QAC5E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAyB,CAAC;IAChF,CAAC;IAEO,uBAAuB;QAC7B,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAEnD,cAAc,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE;YACvC,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,aAAa,aAAa,CAAC,CAAC;YAE9F,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,WAAW,EAAE;gBAAE,OAAO;YAEnG,MAAM,cAAc,GAAG,EAAE,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;YAE3D,cAAc,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE;gBACvC,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;gBAChD,IAAI,CAAC,IAAI;oBAAE,OAAO;gBAElB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,gBAAwB,EAAE,IAA0B;QACjE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC;YAAE,OAAO;QAE7C,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,MAAM,aAAa,GAAwB,EAAE,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,EAAE,CAAC;QAEnG,aAAa,CAAC,OAAO,GAAG,wBAAwB,CAAC,aAAa,CAAC,OAAO,EAAE,aAAkC,CAAC,CAAC;QAE5G,8GAA8G;QAC9G,8GAA8G;QAC9G,+GAA+G;QAC/G,iHAAiH;QACjH,MAAM,gBAAgB,GAA4B,aAAa,CAAC,OAAO,CAAC,KAAK,CAC3E,iDAAiD,CAClD,CAAC;QAEF,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,aAAa,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,kBAAkB,GAAG,IAAI,CAAC,6BAA6B,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;YAE5F,IAAI,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5B,MAAM,aAAa,GAAa,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;gBAElF,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,EAAE,aAAkC,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;gBAE/G,aAAa,CAAC,OAAO,GAAG,oBAAoB,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAA4B,gBAAgB,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAChG,MAAM,WAAW,GAAkB,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEzE,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;YAClF,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;YACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YAEjD,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;YAC1C,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACvF,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,aAAa,CAAC,gBAAgB,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAEO,oBAAoB,CAAC,oBAA4B;QACvD,OAAO,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,CAAC;IACnE,CAAC;IAEO,qBAAqB,CAAC,aAAqB;QACjD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAClC,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,OAAe;QAC3C,OAAO,OAAO;aACX,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,CAAC;IAEO,6BAA6B,CACnC,aAAkC,EAClC,aAAqB;QAErB,OAAO,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,oBAAoB,aAAa,yBAAyB,CAAC,CAAC,CAAC;IAC7G,CAAC;CACF"}
|
|
@@ -102,7 +102,10 @@ export class SubjectRegistration {
|
|
|
102
102
|
const tsFiles = fs.readdirSync(folderPath).filter((file) => file.endsWith('.ts') && file !== 'index.ts');
|
|
103
103
|
tsFiles.forEach((tsFile) => {
|
|
104
104
|
const classContent = fs.readFileSync(path.join(folderPath, tsFile), 'utf-8');
|
|
105
|
-
|
|
105
|
+
// A subject or variant id can have any letter: "algemeen_hiërarchie" gives `AlgemeenHiërarchieMain`. `\w+`
|
|
106
|
+
// is ASCII-only and stopped at the "ë", so the class was left out of the registry. Same characters as
|
|
107
|
+
// `ScreenInterfaceRefiner.findInterfaces()`, including the mark (`\p{M}`) that changing case adds.
|
|
108
|
+
const classMatches = classContent.matchAll(/export\s+class\s+([\p{L}\p{M}\p{N}_]+)/gu);
|
|
106
109
|
for (const match of classMatches) {
|
|
107
110
|
const className = match[1];
|
|
108
111
|
const pattern = new RegExp(`^(${folder})(.*)(Main|Popup|Zoom|Detail)$`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubjectRegistration.js","sourceRoot":"","sources":["../../artifact-builder/SubjectRegistration.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"SubjectRegistration.js","sourceRoot":"","sources":["../../artifact-builder/SubjectRegistration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* **Pipeline Step 1.5** — Fetches task button data from the Indicium API
|
|
3
|
+
* (`i_ui_tab_task`) for the verified GUI application and writes qualifying
|
|
4
|
+
* entries to `seed-data/tab-tasks.json`.
|
|
5
|
+
*
|
|
6
|
+
* **Qualifying tasks:** A task qualifies when `custom_display_type` is absent
|
|
7
|
+
* or not equal to `4`. Tasks where `custom_display_type === 4` are special
|
|
8
|
+
* UI elements (not standard toolbar buttons) and are excluded from typed
|
|
9
|
+
* ActionBar generation.
|
|
10
|
+
*
|
|
11
|
+
* **Output format:** An array of `ITabTask` objects — one per subject+variant
|
|
12
|
+
* that has at least one qualifying task. If all tasks for a given subject+variant
|
|
13
|
+
* are `custom_display_type === 4`, no entry is written for that pair (it will
|
|
14
|
+
* receive a plain `ActionBar` during subject class generation).
|
|
15
|
+
*
|
|
16
|
+
* **When it runs:** Step 1.5 of `testwise sync`, after `buildSubjects` and
|
|
17
|
+
* `buildScreens` but before `ModelDataRefiner`. Fetching here (pre-refinement)
|
|
18
|
+
* means the full model is queried once and the data is available for all
|
|
19
|
+
* registered subjects during Phase 4.
|
|
20
|
+
*/
|
|
21
|
+
export declare function buildTaskData(): Promise<void>;
|