@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Grid.js","sourceRoot":"","sources":["../../../components/grid/Grid.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Grid.js","sourceRoot":"","sources":["../../../components/grid/Grid.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,9 +8,11 @@ export declare class GridObjects extends BaseComponentObjects {
|
|
|
8
8
|
menuIconByColumnHeaderName: (columnName: string) => Locator;
|
|
9
9
|
rowByIndex: (row: number) => Locator;
|
|
10
10
|
rowByRowId: (rowIdPattern: string) => Locator;
|
|
11
|
+
cellByRowIndexAndColumnId: (row: number, colId: string) => Locator;
|
|
11
12
|
cellByValue: (value: RegExp) => Locator;
|
|
12
13
|
rows: () => Locator;
|
|
13
14
|
cellsByColumnId: (colId: string) => Locator;
|
|
15
|
+
summaryCellsByColumnId: (colId: string) => Locator;
|
|
14
16
|
columnByRowLocator: (rowLocator: Locator) => Locator;
|
|
15
17
|
gridCell: () => Locator;
|
|
16
18
|
noRowsOverlay: () => Locator;
|
|
@@ -8,11 +8,21 @@ export class GridObjects extends BaseComponentObjects {
|
|
|
8
8
|
this.menuIconByColumnHeaderName = (columnName) => this.columnHeaderByName(columnName).getByTestId('grid__custom__filter__icon');
|
|
9
9
|
this.rowByIndex = (row) => this.context.locator(`[role="row"][row-index="${row}"]`);
|
|
10
10
|
this.rowByRowId = (rowIdPattern) => this.context.locator(`[role="row"][row-id$="|${rowIdPattern}"]`);
|
|
11
|
+
this.cellByRowIndexAndColumnId = (row, colId) => this.rowByIndex(row).locator(`[col-id="${colId}"]`);
|
|
11
12
|
this.cellByValue = (value) => this.context.locator('[role="button"]', {
|
|
12
13
|
hasText: value
|
|
13
14
|
});
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
// Body data rows only. `.ag-row` already excludes the header (which is `.ag-header-row`),
|
|
16
|
+
// and the `b-` row-index negation excludes the pinned bottom summary row while keeping
|
|
17
|
+
// pinned TOP rows, since the in-progress new row is what add-row flows count.
|
|
18
|
+
this.rows = () => this.context.locator('.ag-row:not([row-index^="b-"])');
|
|
19
|
+
// Scoped to body rows so AG Grid's pinned bottom summary row is not read as data.
|
|
20
|
+
// Pinned bottom rows carry `row-index="b-<n>"`; negating that prefix leaves pinned
|
|
21
|
+
// TOP rows (the in-progress new row) in place. Do not swap this for
|
|
22
|
+
// `:not(.ag-row-pinned)` — that covers top and bottom alike. See
|
|
23
|
+
// tests/components/grid/GridObjects.cellsByColumnId.test.ts
|
|
24
|
+
this.cellsByColumnId = (colId) => this.context.locator(`.ag-row:not([row-index^="b-"]) [col-id="${colId}"] .value-renderer`);
|
|
25
|
+
this.summaryCellsByColumnId = (colId) => this.context.locator(`.ag-floating-bottom [col-id="${colId}"] .value-renderer`);
|
|
16
26
|
this.columnByRowLocator = (rowLocator) => rowLocator.locator('.ag-cell');
|
|
17
27
|
this.gridCell = () => this.context.locator('[role="gridcell"]');
|
|
18
28
|
this.noRowsOverlay = () => this.context.locator('.ag-overlay-no-rows-center');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridObjects.js","sourceRoot":"","sources":["../../../components/grid/GridObjects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,MAAM,OAAO,WAAY,SAAQ,oBAAoB;IACnD,YAAY,IAAU,EAAE,UAA0B,IAAI;QACpD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAGhB,uBAAkB,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAExG,kBAAa,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAEpE,uBAAkB,GAAG,CAAC,UAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QAE1G,+BAA0B,GAAG,CAAC,UAAkB,EAAE,EAAE,CACzD,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC;QAEzE,eAAU,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,2BAA2B,GAAG,IAAI,CAAC,CAAC;QAEvF,eAAU,GAAG,CAAC,YAAoB,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,0BAA0B,YAAY,IAAI,CAAC,CAAC;QAExG,gBAAW,GAAG,CAAC,KAAa,EAAE,EAAE,CACrC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE;YACtC,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"GridObjects.js","sourceRoot":"","sources":["../../../components/grid/GridObjects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,MAAM,OAAO,WAAY,SAAQ,oBAAoB;IACnD,YAAY,IAAU,EAAE,UAA0B,IAAI;QACpD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAGhB,uBAAkB,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAExG,kBAAa,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAEpE,uBAAkB,GAAG,CAAC,UAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QAE1G,+BAA0B,GAAG,CAAC,UAAkB,EAAE,EAAE,CACzD,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC;QAEzE,eAAU,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,2BAA2B,GAAG,IAAI,CAAC,CAAC;QAEvF,eAAU,GAAG,CAAC,YAAoB,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,0BAA0B,YAAY,IAAI,CAAC,CAAC;QAExG,8BAAyB,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,EAAE,CAChE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC;QAE/C,gBAAW,GAAG,CAAC,KAAa,EAAE,EAAE,CACrC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE;YACtC,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEL,0FAA0F;QAC1F,uFAAuF;QACvF,8EAA8E;QACvE,SAAI,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;QAE3E,kFAAkF;QAClF,mFAAmF;QACnF,oEAAoE;QACpE,iEAAiE;QACjE,4DAA4D;QACrD,oBAAe,GAAG,CAAC,KAAa,EAAE,EAAE,CACzC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,2CAA2C,KAAK,oBAAoB,CAAC,CAAC;QAEtF,2BAAsB,GAAG,CAAC,KAAa,EAAE,EAAE,CAChD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,gCAAgC,KAAK,oBAAoB,CAAC,CAAC;QAE3E,uBAAkB,GAAG,CAAC,UAAmB,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE7E,aAAQ,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAE3D,kBAAa,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;IA3ChF,CAAC;CA4CF"}
|
|
@@ -25,7 +25,10 @@ export class AllRowsPopup {
|
|
|
25
25
|
return this._allRowsPopupObjects.anchor(this.deletePopup);
|
|
26
26
|
}
|
|
27
27
|
async waitForOpen() {
|
|
28
|
-
await pollUntil(() => this._allRowsPopupObjects.anchor(this.deletePopup).isVisible(), {
|
|
28
|
+
await pollUntil(() => this._allRowsPopupObjects.anchor(this.deletePopup).isVisible(), {
|
|
29
|
+
predicate: Boolean,
|
|
30
|
+
description: 'the delete-all-rows popup to become visible'
|
|
31
|
+
});
|
|
29
32
|
}
|
|
30
33
|
}
|
|
31
34
|
//# sourceMappingURL=AllRowsPopUp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AllRowsPopUp.js","sourceRoot":"","sources":["../../../components/pop-up/AllRowsPopUp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,YAAY;IAIvB,YAAY,IAAU,EAAE,WAAqB;
|
|
1
|
+
{"version":3,"file":"AllRowsPopUp.js","sourceRoot":"","sources":["../../../components/pop-up/AllRowsPopUp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,YAAY;IAIvB,YAAY,IAAU,EAAE,WAAqB;QAgBtC,4BAAuB,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,uBAAuB,EAAE,CAAC;QAE7F,uBAAkB,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,CAAC;QAEnF,kBAAa,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE,CAAC;QAEzE,iBAAY,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;QArB5E,IAAI,CAAC,WAAW,GAAG,WAAW,IAAI,KAAK,CAAC;QACxC,IAAI,CAAC,oBAAoB,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,SAAS,EAAE,EAAE;YACpF,SAAS,EAAE,OAAO;YAClB,WAAW,EAAE,6CAA6C;SAC3D,CAAC,CAAC;IACL,CAAC;CASF"}
|
|
@@ -8,11 +8,11 @@ import type { Locator } from '@playwright/test';
|
|
|
8
8
|
* field on the form:
|
|
9
9
|
*
|
|
10
10
|
* ```ts
|
|
11
|
-
* // Fill accepts
|
|
12
|
-
* //
|
|
13
|
-
*
|
|
14
|
-
* await subject.form.hireDateField.fill('03
|
|
15
|
-
* await subject.form.hireDateField.fill('
|
|
11
|
+
* // Fill accepts a canonical ISO date. Testwise reads the app's date locale
|
|
12
|
+
* // and types the digits in the picker's expected order, so the same value
|
|
13
|
+
* // enters the same real date under any locale:
|
|
14
|
+
* await subject.form.hireDateField.fill('2025-03-15'); // 15 March 2025
|
|
15
|
+
* await subject.form.hireDateField.fill('2025-03-15 09:46:09'); // with time
|
|
16
16
|
*
|
|
17
17
|
* const raw = await subject.form.hireDateField.inputValue();
|
|
18
18
|
* await subject.form.hireDateField.clear();
|
|
@@ -32,11 +32,19 @@ export declare class DateControl implements IDateControlCore {
|
|
|
32
32
|
private _objects;
|
|
33
33
|
constructor(context: Locator, id: string);
|
|
34
34
|
/**
|
|
35
|
-
* Enter a date value
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
35
|
+
* Enter a date value from a canonical ISO string (`YYYY-MM-DD` or
|
|
36
|
+
* `YYYY-MM-DD HH:mm:ss`). Testwise reads the app's active date locale, reorders
|
|
37
|
+
* the day/month/year digits to the picker's expected order, and types them
|
|
38
|
+
* sequentially so the picker applies its own formatting. This means the same
|
|
39
|
+
* ISO value enters the same real date regardless of the configured locale.
|
|
40
|
+
*
|
|
41
|
+
* For example, `"2025-01-01"` types `01012025` under a DD/MM/YYYY locale,
|
|
42
|
+
* `01012025` under MM/DD/YYYY, and `20250101` under YYYY/MM/DD.
|
|
43
|
+
*
|
|
44
|
+
* Any other value (e.g. `"15/03/2025"`) is typed the way it was before ISO
|
|
45
|
+
* support: its digits in the order given, separators removed. That only enters
|
|
46
|
+
* the intended date under the locale it was written for, so prefer ISO.
|
|
47
|
+
* @param value - Canonical ISO date or date-time string (recommended), or a date written in the picker's own order.
|
|
40
48
|
*/
|
|
41
49
|
fill(value: string): Promise<void>;
|
|
42
50
|
/**
|
|
@@ -1,19 +1,32 @@
|
|
|
1
|
+
import { isIsoDateTime, isoToLocaleDigits } from '../helpers/DateFormat.js';
|
|
2
|
+
import { getDateLocale } from '../helpers/DateLocaleHelper.js';
|
|
1
3
|
import { DateControlObjects } from './DateControlObjects.js';
|
|
2
4
|
export class DateControl {
|
|
3
5
|
constructor(context, id) {
|
|
4
6
|
this._objects = new DateControlObjects(context, id);
|
|
5
7
|
}
|
|
6
8
|
/**
|
|
7
|
-
* Enter a date value
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
9
|
+
* Enter a date value from a canonical ISO string (`YYYY-MM-DD` or
|
|
10
|
+
* `YYYY-MM-DD HH:mm:ss`). Testwise reads the app's active date locale, reorders
|
|
11
|
+
* the day/month/year digits to the picker's expected order, and types them
|
|
12
|
+
* sequentially so the picker applies its own formatting. This means the same
|
|
13
|
+
* ISO value enters the same real date regardless of the configured locale.
|
|
14
|
+
*
|
|
15
|
+
* For example, `"2025-01-01"` types `01012025` under a DD/MM/YYYY locale,
|
|
16
|
+
* `01012025` under MM/DD/YYYY, and `20250101` under YYYY/MM/DD.
|
|
17
|
+
*
|
|
18
|
+
* Any other value (e.g. `"15/03/2025"`) is typed the way it was before ISO
|
|
19
|
+
* support: its digits in the order given, separators removed. That only enters
|
|
20
|
+
* the intended date under the locale it was written for, so prefer ISO.
|
|
21
|
+
* @param value - Canonical ISO date or date-time string (recommended), or a date written in the picker's own order.
|
|
12
22
|
*/
|
|
13
23
|
async fill(value) {
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
24
|
+
const input = this._objects.fieldInput();
|
|
25
|
+
const digits = isIsoDateTime(value)
|
|
26
|
+
? isoToLocaleDigits(value, await getDateLocale(input.page()))
|
|
27
|
+
: value.replace(/\D/g, '');
|
|
28
|
+
await input.click();
|
|
29
|
+
await input.pressSequentially(digits);
|
|
17
30
|
}
|
|
18
31
|
/**
|
|
19
32
|
* Clears the date input by filling it with an empty string.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateControl.js","sourceRoot":"","sources":["../../controls/DateControl.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAiC7D,MAAM,OAAO,WAAW;IAGtB,YAAY,OAAgB,EAAE,EAAU;QACtC,IAAI,CAAC,QAAQ,GAAG,IAAI,kBAAkB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACtD,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"DateControl.js","sourceRoot":"","sources":["../../controls/DateControl.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAiC7D,MAAM,OAAO,WAAW;IAGtB,YAAY,OAAgB,EAAE,EAAU;QACtC,IAAI,CAAC,QAAQ,GAAG,IAAI,kBAAkB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACI,KAAK,CAAC,IAAI,CAAC,KAAa;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC;YACjC,CAAC,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7D,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAE7B,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAK;QAChB,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,UAAU;QACrB,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,CAAC;IACvD,CAAC;IAED;;OAEG;IACI,YAAY;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACpC,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAgB,EAAE,EAAU;IAC5D,MAAM,iBAAiB,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAEzD,OAAO,IAAI,KAAK,CAAC,iBAAiB,EAAE;QAClC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;YACxB,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;gBACnB,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC7C,CAAC;YACD,MAAM,KAAK,GAAI,OAAe,CAAC,IAAI,CAAC,CAAC;YAErC,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBAChC,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAA4B,CAAC;AAChC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export class DateControlObjects {
|
|
2
2
|
constructor(context, id) {
|
|
3
|
-
this.fieldInput = () => this.
|
|
3
|
+
this.fieldInput = () => this.dateField().locator('input');
|
|
4
4
|
this.dateField = () => this._context.getByTestId(`form-field__${this._id}`);
|
|
5
5
|
this._context = context;
|
|
6
6
|
this._id = id;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateControlObjects.js","sourceRoot":"","sources":["../../controls/DateControlObjects.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,kBAAkB;IAI7B,YAAY,OAAgB,EAAE,EAAU;QAKjC,eAAU,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"DateControlObjects.js","sourceRoot":"","sources":["../../controls/DateControlObjects.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,kBAAkB;IAI7B,YAAY,OAAgB,EAAE,EAAU;QAKjC,eAAU,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE9D,cAAS,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QANrF,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;IAChB,CAAC;CAKF"}
|
|
@@ -3,8 +3,8 @@ export class FormComboBoxObjects {
|
|
|
3
3
|
this.field = () => this._context.getByTestId(`form-field__${this._id}`);
|
|
4
4
|
this.autoCompleteMenu = () => this._context.page().getByTestId(`form-field__${this._id}__select__options-list`);
|
|
5
5
|
this.option = (optionText) => {
|
|
6
|
-
const
|
|
7
|
-
return this.autoCompleteMenu().getByTestId(`form-field__${this._id}__select__${
|
|
6
|
+
const optionSlug = optionText.toLowerCase().replace(/\s+/g, '-');
|
|
7
|
+
return this.autoCompleteMenu().getByTestId(`form-field__${this._id}__select__${optionSlug}__text`);
|
|
8
8
|
};
|
|
9
9
|
this.clearButton = () => this.field().locator('Button[aria-label="Clear"]');
|
|
10
10
|
this.validationMessage = () => this.field().locator('.TooltipContainer p');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormComboBoxObjects.js","sourceRoot":"","sources":["../../controls/FormComboBoxObjects.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,mBAAmB;IAI9B,YAAY,OAAgB,EAAE,EAAU;QAKjC,UAAK,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAE5E,qBAAgB,GAAG,GAAY,EAAE,CACtC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,eAAe,IAAI,CAAC,GAAG,wBAAwB,CAAC,CAAC;QAE7E,WAAM,GAAG,CAAC,UAAkB,EAAW,EAAE;YAC9C,MAAM,
|
|
1
|
+
{"version":3,"file":"FormComboBoxObjects.js","sourceRoot":"","sources":["../../controls/FormComboBoxObjects.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,mBAAmB;IAI9B,YAAY,OAAgB,EAAE,EAAU;QAKjC,UAAK,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAE5E,qBAAgB,GAAG,GAAY,EAAE,CACtC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,eAAe,IAAI,CAAC,GAAG,wBAAwB,CAAC,CAAC;QAE7E,WAAM,GAAG,CAAC,UAAkB,EAAW,EAAE;YAC9C,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACjE,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,WAAW,CAAC,eAAe,IAAI,CAAC,GAAG,aAAa,UAAU,QAAQ,CAAC,CAAC;QACrG,CAAC,CAAC;QAEK,gBAAW,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;QAEhF,sBAAiB,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QAE/E,eAAU,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAlB/D,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;IAChB,CAAC;CAiBF"}
|
|
@@ -26,6 +26,8 @@ export type IGridColumnControlCore = {
|
|
|
26
26
|
getColumnHeader(): Promise<Locator>;
|
|
27
27
|
getCellByExactValue(value: string): Locator;
|
|
28
28
|
getCellValues(): Promise<string[]>;
|
|
29
|
+
getSummaryCell(): Locator;
|
|
30
|
+
getSummaryValue(): Promise<string | null>;
|
|
29
31
|
filterByColumnValueExcelStyle(value: string, deselectAll?: boolean): Promise<void>;
|
|
30
32
|
openExcelStyleFilterPopup(): Promise<void>;
|
|
31
33
|
};
|
|
@@ -20,6 +20,12 @@ class GridColumnControl {
|
|
|
20
20
|
async getCellValues() {
|
|
21
21
|
return await this._grid.getCellValuesByColId(this._id);
|
|
22
22
|
}
|
|
23
|
+
getSummaryCell() {
|
|
24
|
+
return this._grid.getSummaryCellByColId(this._id);
|
|
25
|
+
}
|
|
26
|
+
async getSummaryValue() {
|
|
27
|
+
return await this._grid.getSummaryValueByColId(this._id);
|
|
28
|
+
}
|
|
23
29
|
async filterByColumnValueExcelStyle(value, deselectAll) {
|
|
24
30
|
await this._grid.filterByColumnValueExcelStyle(this._objects.columnHeader(), value, deselectAll);
|
|
25
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridColumnControl.js","sourceRoot":"","sources":["../../controls/GridColumnControl.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"GridColumnControl.js","sourceRoot":"","sources":["../../controls/GridColumnControl.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAoCzE,MAAM,iBAAiB;IAKrB,YAAY,WAAoB,EAAE,EAAU;QAC1C,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,QAAQ,GAAG,IAAI,wBAAwB,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IAEM,KAAK,CAAC,yBAAyB;QACpC,MAAM,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;IAEM,KAAK,CAAC,eAAe;QAC1B,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;IAC5C,CAAC;IAEM,mBAAmB,CAAC,KAAa;QACtC,MAAM,gBAAgB,GAAG,IAAI,MAAM,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IACrD,CAAC;IAEM,KAAK,CAAC,aAAa;QACxB,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzD,CAAC;IAEM,cAAc;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpD,CAAC;IAEM,KAAK,CAAC,eAAe;QAC1B,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3D,CAAC;IAEM,KAAK,CAAC,6BAA6B,CAAC,KAAa,EAAE,WAAqB;QAC7E,MAAM,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IACnG,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CAAC,WAAoB,EAAE,EAAU;IACtE,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC1C,MAAM,aAAa,GAAG,IAAI,iBAAiB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY,WAAW,IAAI,CAAC,CAAC;IAEjE,OAAO,IAAI,KAAK,CAAC,aAAa,EAAE;QAC9B,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;YACxB,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;gBACnB,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC7C,CAAC;YAED,MAAM,KAAK,GAAI,OAAe,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBAChC,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAkC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure, page-independent helpers for turning a canonical ISO date/time into the
|
|
3
|
+
* digit sequence a Thinkwise date picker expects for a given locale.
|
|
4
|
+
*
|
|
5
|
+
* **Why this exists:** Thinkwise renders dates in the field order dictated by the
|
|
6
|
+
* logged-in user's `dateLocale` (e.g. `DD/MM/YYYY` for en-GB, `MM/DD/YYYY` for
|
|
7
|
+
* en-US, `YYYY-MM-DD` for sv-SE). The date picker applies its own separators when
|
|
8
|
+
* digits are typed sequentially, so all we must do is emit the day/month/year
|
|
9
|
+
* digits in the locale's order. These functions have no Playwright dependency and
|
|
10
|
+
* are unit-testable in isolation.
|
|
11
|
+
*/
|
|
12
|
+
export type DateParts = {
|
|
13
|
+
year: string;
|
|
14
|
+
month: string;
|
|
15
|
+
day: string;
|
|
16
|
+
hour?: string;
|
|
17
|
+
minute?: string;
|
|
18
|
+
second?: string;
|
|
19
|
+
};
|
|
20
|
+
export type DateFieldOrder = ('year' | 'month' | 'day')[];
|
|
21
|
+
/**
|
|
22
|
+
* Parse a canonical ISO date/time string into its component parts.
|
|
23
|
+
*
|
|
24
|
+
* Accepts `YYYY-MM-DD` and `YYYY-MM-DD HH:mm[:ss]` (a `T` separator also works).
|
|
25
|
+
* Throws a descriptive error on any other input so test authors get a clear
|
|
26
|
+
* message rather than a silently wrong date.
|
|
27
|
+
*
|
|
28
|
+
* @param iso - Canonical ISO date or date-time string.
|
|
29
|
+
* @returns The parsed, zero-padded date (and optional time) parts.
|
|
30
|
+
*/
|
|
31
|
+
export declare function parseIsoDateTime(iso: string): DateParts;
|
|
32
|
+
/**
|
|
33
|
+
* Whether a value is a canonical ISO date or date-time that {@link parseIsoDateTime} accepts.
|
|
34
|
+
*
|
|
35
|
+
* @param value - The value to test.
|
|
36
|
+
* @returns `true` for `YYYY-MM-DD` and `YYYY-MM-DD HH:mm[:ss]` (a `T` separator also works).
|
|
37
|
+
*/
|
|
38
|
+
export declare function isIsoDateTime(value: string): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Determine the day/month/year ordering a locale uses to display dates.
|
|
41
|
+
*
|
|
42
|
+
* Derives the order from `Intl.DateTimeFormat` rather than a hardcoded table, so
|
|
43
|
+
* any locale the app supports is handled. Falls back to day/month/year when the
|
|
44
|
+
* locale is empty or unrecognised.
|
|
45
|
+
*
|
|
46
|
+
* @param locale - A BCP-47 locale tag (e.g. `en-GB`, `en-US`, `sv-SE`).
|
|
47
|
+
* @returns The order of date fields for that locale.
|
|
48
|
+
*/
|
|
49
|
+
export declare function fieldOrderForLocale(locale: string): DateFieldOrder;
|
|
50
|
+
/**
|
|
51
|
+
* Produce the sequence of digits to type into a date picker for the given locale
|
|
52
|
+
* order. Date digits come first in `order`, followed by any time digits (always
|
|
53
|
+
* `HHmmss`). No separators are emitted — the picker inserts its own.
|
|
54
|
+
*
|
|
55
|
+
* @param parts - Parsed date/time parts.
|
|
56
|
+
* @param order - The locale's day/month/year ordering.
|
|
57
|
+
* @returns The digit string to type sequentially.
|
|
58
|
+
*/
|
|
59
|
+
export declare function toDigitSequence(parts: DateParts, order: DateFieldOrder): string;
|
|
60
|
+
/**
|
|
61
|
+
* Convenience helper combining {@link parseIsoDateTime}, {@link fieldOrderForLocale}
|
|
62
|
+
* and {@link toDigitSequence}: turn a canonical ISO date into the digit sequence
|
|
63
|
+
* for a locale.
|
|
64
|
+
*
|
|
65
|
+
* @param iso - Canonical ISO date or date-time string.
|
|
66
|
+
* @param locale - A BCP-47 locale tag; empty falls back to day/month/year order.
|
|
67
|
+
* @returns The digit string to type sequentially into the picker.
|
|
68
|
+
*/
|
|
69
|
+
export declare function isoToLocaleDigits(iso: string, locale: string): string;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure, page-independent helpers for turning a canonical ISO date/time into the
|
|
3
|
+
* digit sequence a Thinkwise date picker expects for a given locale.
|
|
4
|
+
*
|
|
5
|
+
* **Why this exists:** Thinkwise renders dates in the field order dictated by the
|
|
6
|
+
* logged-in user's `dateLocale` (e.g. `DD/MM/YYYY` for en-GB, `MM/DD/YYYY` for
|
|
7
|
+
* en-US, `YYYY-MM-DD` for sv-SE). The date picker applies its own separators when
|
|
8
|
+
* digits are typed sequentially, so all we must do is emit the day/month/year
|
|
9
|
+
* digits in the locale's order. These functions have no Playwright dependency and
|
|
10
|
+
* are unit-testable in isolation.
|
|
11
|
+
*/
|
|
12
|
+
// A fixed reference date whose parts are all distinct and unambiguous, used to
|
|
13
|
+
// probe a locale's field order via Intl. Day 7 / month 5 keeps it well inside
|
|
14
|
+
// valid ranges for every calendar.
|
|
15
|
+
const referenceDate = new Date(Date.UTC(2026, 4, 7));
|
|
16
|
+
const isoDateTimePattern = /^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})(?:[ T](?<hour>\d{2}):(?<minute>\d{2})(?::(?<second>\d{2}))?)?$/;
|
|
17
|
+
/**
|
|
18
|
+
* Parse a canonical ISO date/time string into its component parts.
|
|
19
|
+
*
|
|
20
|
+
* Accepts `YYYY-MM-DD` and `YYYY-MM-DD HH:mm[:ss]` (a `T` separator also works).
|
|
21
|
+
* Throws a descriptive error on any other input so test authors get a clear
|
|
22
|
+
* message rather than a silently wrong date.
|
|
23
|
+
*
|
|
24
|
+
* @param iso - Canonical ISO date or date-time string.
|
|
25
|
+
* @returns The parsed, zero-padded date (and optional time) parts.
|
|
26
|
+
*/
|
|
27
|
+
export function parseIsoDateTime(iso) {
|
|
28
|
+
const match = isoDateTimePattern.exec(iso.trim());
|
|
29
|
+
if (!match?.groups) {
|
|
30
|
+
throw new Error(`Invalid date "${iso}". Expected canonical ISO format "YYYY-MM-DD" or "YYYY-MM-DD HH:mm:ss".`);
|
|
31
|
+
}
|
|
32
|
+
const { year, month, day, hour, minute, second } = match.groups;
|
|
33
|
+
return {
|
|
34
|
+
year,
|
|
35
|
+
month,
|
|
36
|
+
day,
|
|
37
|
+
...(hour !== undefined ? { hour, minute, second: second ?? '00' } : {})
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Whether a value is a canonical ISO date or date-time that {@link parseIsoDateTime} accepts.
|
|
42
|
+
*
|
|
43
|
+
* @param value - The value to test.
|
|
44
|
+
* @returns `true` for `YYYY-MM-DD` and `YYYY-MM-DD HH:mm[:ss]` (a `T` separator also works).
|
|
45
|
+
*/
|
|
46
|
+
export function isIsoDateTime(value) {
|
|
47
|
+
return isoDateTimePattern.test(value.trim());
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Determine the day/month/year ordering a locale uses to display dates.
|
|
51
|
+
*
|
|
52
|
+
* Derives the order from `Intl.DateTimeFormat` rather than a hardcoded table, so
|
|
53
|
+
* any locale the app supports is handled. Falls back to day/month/year when the
|
|
54
|
+
* locale is empty or unrecognised.
|
|
55
|
+
*
|
|
56
|
+
* @param locale - A BCP-47 locale tag (e.g. `en-GB`, `en-US`, `sv-SE`).
|
|
57
|
+
* @returns The order of date fields for that locale.
|
|
58
|
+
*/
|
|
59
|
+
export function fieldOrderForLocale(locale) {
|
|
60
|
+
const fallback = ['day', 'month', 'year'];
|
|
61
|
+
if (!locale)
|
|
62
|
+
return fallback;
|
|
63
|
+
try {
|
|
64
|
+
const order = new Intl.DateTimeFormat(locale)
|
|
65
|
+
.formatToParts(referenceDate)
|
|
66
|
+
.map((part) => part.type)
|
|
67
|
+
.filter((type) => type === 'year' || type === 'month' || type === 'day');
|
|
68
|
+
return order.length === 3 ? order : fallback;
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return fallback;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Produce the sequence of digits to type into a date picker for the given locale
|
|
76
|
+
* order. Date digits come first in `order`, followed by any time digits (always
|
|
77
|
+
* `HHmmss`). No separators are emitted — the picker inserts its own.
|
|
78
|
+
*
|
|
79
|
+
* @param parts - Parsed date/time parts.
|
|
80
|
+
* @param order - The locale's day/month/year ordering.
|
|
81
|
+
* @returns The digit string to type sequentially.
|
|
82
|
+
*/
|
|
83
|
+
export function toDigitSequence(parts, order) {
|
|
84
|
+
const dateDigits = order.map((field) => parts[field]).join('');
|
|
85
|
+
const timeDigits = parts.hour !== undefined ? `${parts.hour}${parts.minute ?? '00'}${parts.second ?? '00'}` : '';
|
|
86
|
+
return `${dateDigits}${timeDigits}`;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Convenience helper combining {@link parseIsoDateTime}, {@link fieldOrderForLocale}
|
|
90
|
+
* and {@link toDigitSequence}: turn a canonical ISO date into the digit sequence
|
|
91
|
+
* for a locale.
|
|
92
|
+
*
|
|
93
|
+
* @param iso - Canonical ISO date or date-time string.
|
|
94
|
+
* @param locale - A BCP-47 locale tag; empty falls back to day/month/year order.
|
|
95
|
+
* @returns The digit string to type sequentially into the picker.
|
|
96
|
+
*/
|
|
97
|
+
export function isoToLocaleDigits(iso, locale) {
|
|
98
|
+
return toDigitSequence(parseIsoDateTime(iso), fieldOrderForLocale(locale));
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=DateFormat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DateFormat.js","sourceRoot":"","sources":["../../helpers/DateFormat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAaH,+EAA+E;AAC/E,8EAA8E;AAC9E,mCAAmC;AACnC,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAErD,MAAM,kBAAkB,GACtB,8GAA8G,CAAC;AAEjH;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAElD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,yEAAyE,CAAC,CAAC;IACjH,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;IAEhE,OAAO;QACL,IAAI;QACJ,KAAK;QACL,GAAG;QACH,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxE,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,MAAM,QAAQ,GAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAE1D,IAAI,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC;IAE7B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;aAC1C,aAAa,CAAC,aAAa,CAAC;aAC5B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;aACxB,MAAM,CAAC,CAAC,IAAI,EAAoC,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC;QAE7G,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,KAAgB,EAAE,KAAqB;IACrE,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEjH,OAAO,GAAG,UAAU,GAAG,UAAU,EAAE,CAAC;AACtC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW,EAAE,MAAc;IAC3D,OAAO,eAAe,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7E,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Page } from '@playwright/test';
|
|
2
|
+
/**
|
|
3
|
+
* Retrieve the app's active date locale (e.g. `en-GB`, `sv-SE`), caching the
|
|
4
|
+
* result per page. Returns `''` when the Redux store is not yet available or does
|
|
5
|
+
* not expose a locale.
|
|
6
|
+
*
|
|
7
|
+
* @param page - The Playwright page bound to a logged-in Thinkwise session.
|
|
8
|
+
* @returns The BCP-47 date locale tag, or `''` if it cannot be determined.
|
|
9
|
+
*/
|
|
10
|
+
export declare function getDateLocale(page: Page): Promise<string>;
|
|
11
|
+
/**
|
|
12
|
+
* Clear any cached date locale for a page. Useful after a re-login or a user
|
|
13
|
+
* preference change that alters the active `dateLocale` within the same page.
|
|
14
|
+
*
|
|
15
|
+
* @param page - The page whose cached locale should be discarded.
|
|
16
|
+
*/
|
|
17
|
+
export declare function clearDateLocaleCache(page: Page): void;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads the logged-in user's active date locale from the Thinkwise web app.
|
|
3
|
+
*
|
|
4
|
+
* **Why this exists:** Date pickers render dates in the field order dictated by the
|
|
5
|
+
* user's `dateLocale` preference. Testwise needs that locale to type dates in the
|
|
6
|
+
* correct order regardless of the browser locale. The value lives in the Redux
|
|
7
|
+
* store the app exposes on `window.__REDUX_STORE__` (see the front-end change that
|
|
8
|
+
* added it):
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* window.__REDUX_STORE__.getState().auth.user.dateLocale
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* The store is populated asynchronously after config load and login, so callers
|
|
15
|
+
* must only rely on this once past the login screen. Before then (or if the shape
|
|
16
|
+
* ever changes) this resolves to an empty string, letting callers fall back to a
|
|
17
|
+
* sensible default order.
|
|
18
|
+
*/
|
|
19
|
+
// Cache the resolved locale per page so repeated date fills don't re-evaluate.
|
|
20
|
+
const localeCache = new WeakMap();
|
|
21
|
+
/**
|
|
22
|
+
* Retrieve the app's active date locale (e.g. `en-GB`, `sv-SE`), caching the
|
|
23
|
+
* result per page. Returns `''` when the Redux store is not yet available or does
|
|
24
|
+
* not expose a locale.
|
|
25
|
+
*
|
|
26
|
+
* @param page - The Playwright page bound to a logged-in Thinkwise session.
|
|
27
|
+
* @returns The BCP-47 date locale tag, or `''` if it cannot be determined.
|
|
28
|
+
*/
|
|
29
|
+
export async function getDateLocale(page) {
|
|
30
|
+
const cached = localeCache.get(page);
|
|
31
|
+
if (cached !== undefined)
|
|
32
|
+
return cached;
|
|
33
|
+
const locale = await page
|
|
34
|
+
.evaluate(() => {
|
|
35
|
+
const store = window.__REDUX_STORE__;
|
|
36
|
+
const state = store?.getState();
|
|
37
|
+
return state?.auth?.user?.dateLocale ?? '';
|
|
38
|
+
})
|
|
39
|
+
.catch(() => '');
|
|
40
|
+
localeCache.set(page, locale);
|
|
41
|
+
return locale;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Clear any cached date locale for a page. Useful after a re-login or a user
|
|
45
|
+
* preference change that alters the active `dateLocale` within the same page.
|
|
46
|
+
*
|
|
47
|
+
* @param page - The page whose cached locale should be discarded.
|
|
48
|
+
*/
|
|
49
|
+
export function clearDateLocaleCache(page) {
|
|
50
|
+
localeCache.delete(page);
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=DateLocaleHelper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DateLocaleHelper.js","sourceRoot":"","sources":["../../helpers/DateLocaleHelper.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AAEH,+EAA+E;AAC/E,MAAM,WAAW,GAAG,IAAI,OAAO,EAAgB,CAAC;AAEhD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAU;IAC5C,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAExC,MAAM,MAAM,GAAG,MAAM,IAAI;SACtB,QAAQ,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAI,MAAmE,CAAC,eAAe,CAAC;QACnG,MAAM,KAAK,GAAG,KAAK,EAAE,QAAQ,EAA+D,CAAC;QAC7F,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,IAAI,EAAE,CAAC;IAC7C,CAAC,CAAC;SACD,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAEnB,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAU;IAC7C,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC"}
|
|
@@ -74,7 +74,8 @@ export class LoginHelper {
|
|
|
74
74
|
await pollUntil(async () => this._page.url().includes('#application='), {
|
|
75
75
|
timeout,
|
|
76
76
|
interval: 200,
|
|
77
|
-
predicate: (ok) => ok === true
|
|
77
|
+
predicate: (ok) => ok === true,
|
|
78
|
+
description: 'the URL to carry #application= after login'
|
|
78
79
|
});
|
|
79
80
|
}
|
|
80
81
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoginHelper.js","sourceRoot":"","sources":["../../helpers/LoginHelper.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"LoginHelper.js","sourceRoot":"","sources":["../../helpers/LoginHelper.ts"],"names":[],"mappings":"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"}
|
package/dist/helpers/Poll.d.ts
CHANGED
|
@@ -1,14 +1,36 @@
|
|
|
1
1
|
import type { PollOptions } from '../types/PollTypes.js';
|
|
2
|
+
/**
|
|
3
|
+
* Thrown when `pollUntil` exceeds its timeout.
|
|
4
|
+
*
|
|
5
|
+
* The message states what was awaited, how many attempts were made and the last value
|
|
6
|
+
* the polled function returned, so a timeout is diagnosable from a test report alone.
|
|
7
|
+
* The same details are exposed as properties for programmatic inspection.
|
|
8
|
+
*/
|
|
9
|
+
export declare class PollTimeoutError extends Error {
|
|
10
|
+
readonly timeout: number;
|
|
11
|
+
readonly elapsedMs: number;
|
|
12
|
+
readonly attempts: number;
|
|
13
|
+
readonly lastValue: unknown;
|
|
14
|
+
readonly description?: string;
|
|
15
|
+
constructor(details: {
|
|
16
|
+
timeout: number;
|
|
17
|
+
elapsedMs: number;
|
|
18
|
+
attempts: number;
|
|
19
|
+
lastValue: unknown;
|
|
20
|
+
description?: string;
|
|
21
|
+
});
|
|
22
|
+
}
|
|
2
23
|
/**
|
|
3
24
|
* Repeatedly calls `fn` at a configurable interval until the optional `predicate` returns
|
|
4
|
-
* truthy or the `timeout` is exceeded, at which point it throws.
|
|
25
|
+
* truthy or the `timeout` is exceeded, at which point it throws a {@link PollTimeoutError}.
|
|
5
26
|
* `onTick` is called with the last value and elapsed time after each failing attempt.
|
|
6
27
|
* @param fn - The async or sync function to poll.
|
|
7
28
|
* @param opts.timeout - Maximum wait time in milliseconds (default `10 000`).
|
|
8
29
|
* @param opts.interval - Polling interval in milliseconds (default `200`).
|
|
9
30
|
* @param opts.predicate - Returns `true` when the result is acceptable (default: truthy check).
|
|
10
31
|
* @param opts.onTick - Called after each failing attempt with the last value and elapsed ms.
|
|
32
|
+
* @param opts.description - What is being waited for, quoted in the timeout message.
|
|
11
33
|
* @returns The first value for which `predicate` returns `true`.
|
|
12
|
-
* @throws If `timeout` is exceeded before `predicate` returns `true`.
|
|
34
|
+
* @throws {PollTimeoutError} If `timeout` is exceeded before `predicate` returns `true`.
|
|
13
35
|
*/
|
|
14
36
|
export declare function pollUntil<T>(fn: () => Promise<T> | T, opts?: PollOptions<T>): Promise<T>;
|