@thinkwise/testwise 0.2.105 → 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.
Files changed (100) hide show
  1. package/artifact-builder/CustomActionBarGenerator.ts +210 -0
  2. package/artifact-builder/InterfaceGenerator.ts +4 -1
  3. package/artifact-builder/ScreenInterfaceRefiner.ts +7 -1
  4. package/artifact-builder/SubjectComponentGenerator.ts +7 -1
  5. package/artifact-builder/SubjectRegistration.ts +4 -1
  6. package/artifact-builder/TaskDataBuilder.ts +71 -0
  7. package/artifact-builder/helpers/DataRetriever.ts +11 -0
  8. package/artifact-builder/helpers/PipelinePaths.ts +5 -0
  9. package/artifact-builder/index.ts +2 -0
  10. package/components/action-bar/ActionBarObjects.ts +3 -1
  11. package/components/filter/FilterPopup.ts +77 -14
  12. package/components/filter/FilterPopupObjects.ts +25 -4
  13. package/components/grid/Grid.ts +40 -2
  14. package/components/grid/GridObjects.ts +18 -3
  15. package/components/pop-up/AllRowsPopUp.ts +4 -1
  16. package/controls/DateControl.ts +26 -13
  17. package/controls/DateControlObjects.ts +1 -1
  18. package/controls/FormComboBoxObjects.ts +2 -2
  19. package/controls/GridColumnControl.ts +10 -0
  20. package/dist/artifact-builder/CustomActionBarGenerator.d.ts +82 -0
  21. package/dist/artifact-builder/CustomActionBarGenerator.js +175 -0
  22. package/dist/artifact-builder/CustomActionBarGenerator.js.map +1 -0
  23. package/dist/artifact-builder/InterfaceGenerator.js +4 -1
  24. package/dist/artifact-builder/InterfaceGenerator.js.map +1 -1
  25. package/dist/artifact-builder/ScreenInterfaceRefiner.js +7 -1
  26. package/dist/artifact-builder/ScreenInterfaceRefiner.js.map +1 -1
  27. package/dist/artifact-builder/SubjectComponentGenerator.js +5 -1
  28. package/dist/artifact-builder/SubjectComponentGenerator.js.map +1 -1
  29. package/dist/artifact-builder/SubjectRegistration.js +4 -1
  30. package/dist/artifact-builder/SubjectRegistration.js.map +1 -1
  31. package/dist/artifact-builder/TaskDataBuilder.d.ts +21 -0
  32. package/dist/artifact-builder/TaskDataBuilder.js +60 -0
  33. package/dist/artifact-builder/TaskDataBuilder.js.map +1 -0
  34. package/dist/artifact-builder/helpers/DataRetriever.d.ts +2 -0
  35. package/dist/artifact-builder/helpers/DataRetriever.js +7 -0
  36. package/dist/artifact-builder/helpers/DataRetriever.js.map +1 -1
  37. package/dist/artifact-builder/helpers/PipelinePaths.d.ts +2 -0
  38. package/dist/artifact-builder/helpers/PipelinePaths.js +4 -0
  39. package/dist/artifact-builder/helpers/PipelinePaths.js.map +1 -1
  40. package/dist/artifact-builder/index.d.ts +2 -0
  41. package/dist/artifact-builder/index.js +2 -0
  42. package/dist/artifact-builder/index.js.map +1 -1
  43. package/dist/components/action-bar/ActionBarObjects.js +2 -1
  44. package/dist/components/action-bar/ActionBarObjects.js.map +1 -1
  45. package/dist/components/filter/FilterPopup.d.ts +50 -2
  46. package/dist/components/filter/FilterPopup.js +69 -15
  47. package/dist/components/filter/FilterPopup.js.map +1 -1
  48. package/dist/components/filter/FilterPopupObjects.d.ts +4 -2
  49. package/dist/components/filter/FilterPopupObjects.js +18 -4
  50. package/dist/components/filter/FilterPopupObjects.js.map +1 -1
  51. package/dist/components/grid/Grid.d.ts +22 -0
  52. package/dist/components/grid/Grid.js +36 -2
  53. package/dist/components/grid/Grid.js.map +1 -1
  54. package/dist/components/grid/GridObjects.d.ts +2 -0
  55. package/dist/components/grid/GridObjects.js +12 -2
  56. package/dist/components/grid/GridObjects.js.map +1 -1
  57. package/dist/components/pop-up/AllRowsPopUp.js +4 -1
  58. package/dist/components/pop-up/AllRowsPopUp.js.map +1 -1
  59. package/dist/controls/DateControl.d.ts +18 -10
  60. package/dist/controls/DateControl.js +21 -8
  61. package/dist/controls/DateControl.js.map +1 -1
  62. package/dist/controls/DateControlObjects.js +1 -1
  63. package/dist/controls/DateControlObjects.js.map +1 -1
  64. package/dist/controls/FormComboBoxObjects.js +2 -2
  65. package/dist/controls/FormComboBoxObjects.js.map +1 -1
  66. package/dist/controls/GridColumnControl.d.ts +2 -0
  67. package/dist/controls/GridColumnControl.js +6 -0
  68. package/dist/controls/GridColumnControl.js.map +1 -1
  69. package/dist/helpers/DateFormat.d.ts +69 -0
  70. package/dist/helpers/DateFormat.js +100 -0
  71. package/dist/helpers/DateFormat.js.map +1 -0
  72. package/dist/helpers/DateLocaleHelper.d.ts +17 -0
  73. package/dist/helpers/DateLocaleHelper.js +52 -0
  74. package/dist/helpers/DateLocaleHelper.js.map +1 -0
  75. package/dist/helpers/LoginHelper.js +2 -1
  76. package/dist/helpers/LoginHelper.js.map +1 -1
  77. package/dist/helpers/Poll.d.ts +24 -2
  78. package/dist/helpers/Poll.js +87 -5
  79. package/dist/helpers/Poll.js.map +1 -1
  80. package/dist/helpers/UserSimulationHelper.js +2 -1
  81. package/dist/helpers/UserSimulationHelper.js.map +1 -1
  82. package/dist/interfaces/ITabTask.d.ts +21 -0
  83. package/dist/interfaces/ITabTask.js +2 -0
  84. package/dist/interfaces/ITabTask.js.map +1 -0
  85. package/dist/services/IndiciumApi.service.d.ts +7 -0
  86. package/dist/services/IndiciumApi.service.js +19 -0
  87. package/dist/services/IndiciumApi.service.js.map +1 -1
  88. package/dist/types/PollTypes.d.ts +5 -0
  89. package/helpers/DateFormat.ts +123 -0
  90. package/helpers/DateLocaleHelper.ts +57 -0
  91. package/helpers/LoginHelper.ts +2 -1
  92. package/helpers/Poll.ts +108 -5
  93. package/helpers/UserSimulationHelper.ts +2 -1
  94. package/interfaces/ITabTask.ts +21 -0
  95. package/package.json +3 -1
  96. package/promptCredentials.js +124 -124
  97. package/scripts/checkPackageContents.js +39 -0
  98. package/scripts/sync.js +14 -0
  99. package/services/IndiciumApi.service.ts +21 -0
  100. package/types/PollTypes.ts +5 -0
@@ -0,0 +1,60 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ /** biome-ignore-all lint/suspicious/noExplicitAny: Because I can */
3
+ import * as fs from 'node:fs/promises';
4
+ import * as path from 'node:path';
5
+ import { indiciumApi } from '../services/IndiciumApi.service.js';
6
+ import { DataRetriever } from './helpers/DataRetriever.js';
7
+ import { PipelinePaths } from './helpers/PipelinePaths.js';
8
+ /**
9
+ * **Pipeline Step 1.5** — Fetches task button data from the Indicium API
10
+ * (`i_ui_tab_task`) for the verified GUI application and writes qualifying
11
+ * entries to `seed-data/tab-tasks.json`.
12
+ *
13
+ * **Qualifying tasks:** A task qualifies when `custom_display_type` is absent
14
+ * or not equal to `4`. Tasks where `custom_display_type === 4` are special
15
+ * UI elements (not standard toolbar buttons) and are excluded from typed
16
+ * ActionBar generation.
17
+ *
18
+ * **Output format:** An array of `ITabTask` objects — one per subject+variant
19
+ * that has at least one qualifying task. If all tasks for a given subject+variant
20
+ * are `custom_display_type === 4`, no entry is written for that pair (it will
21
+ * receive a plain `ActionBar` during subject class generation).
22
+ *
23
+ * **When it runs:** Step 1.5 of `testwise sync`, after `buildSubjects` and
24
+ * `buildScreens` but before `ModelDataRefiner`. Fetching here (pre-refinement)
25
+ * means the full model is queried once and the data is available for all
26
+ * registered subjects during Phase 4.
27
+ */
28
+ export async function buildTaskData() {
29
+ if (!(await indiciumApi.canConnectToProject())) {
30
+ console.log('Cannot connect to Indicium API. Aborting task data build.');
31
+ return;
32
+ }
33
+ const rawTasks = await indiciumApi.getTabTasks();
34
+ // Group by subject+variant, keeping only qualifying tasks
35
+ const grouped = new Map();
36
+ for (const raw of rawTasks) {
37
+ const subject = raw.tab_id;
38
+ const variant = raw.tab_variant_id;
39
+ const taskId = raw.task_id;
40
+ const customDisplayType = raw.custom_display_type;
41
+ // Skip tasks rendered with a special custom display type (not a standard button)
42
+ if (customDisplayType === 4)
43
+ continue;
44
+ const key = `${subject}__${variant}`;
45
+ if (!grouped.has(key)) {
46
+ grouped.set(key, { subject, variant, tasks: [] });
47
+ }
48
+ grouped.get(key)?.tasks.push(taskId);
49
+ }
50
+ const result = [...grouped.values()];
51
+ const paths = new PipelinePaths();
52
+ const tabTasksPath = paths.tabTasksJson;
53
+ await fs.mkdir(path.dirname(tabTasksPath), { recursive: true });
54
+ await fs.writeFile(tabTasksPath, JSON.stringify(result, null, 2), 'utf-8');
55
+ console.log(`Task data written to ${tabTasksPath}`);
56
+ // Verify using DataRetriever to confirm the file was written correctly
57
+ const written = new DataRetriever(paths).getTabTasks();
58
+ console.log(`Task data verified: ${written.length} subject+variant combination(s) with qualifying tasks.`);
59
+ }
60
+ //# sourceMappingURL=TaskDataBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskDataBuilder.js","sourceRoot":"","sources":["../../artifact-builder/TaskDataBuilder.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,oEAAoE;AACpE,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,IAAI,CAAC,CAAC,MAAM,WAAW,CAAC,mBAAmB,EAAE,CAAC,EAAE,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;QACzE,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAU,MAAM,WAAW,CAAC,WAAW,EAAE,CAAC;IAExD,0DAA0D;IAC1D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAiE,CAAC;IAEzF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAW,GAAG,CAAC,MAAM,CAAC;QACnC,MAAM,OAAO,GAAW,GAAG,CAAC,cAAc,CAAC;QAC3C,MAAM,MAAM,GAAW,GAAG,CAAC,OAAO,CAAC;QACnC,MAAM,iBAAiB,GAAuB,GAAG,CAAC,mBAAmB,CAAC;QAEtE,iFAAiF;QACjF,IAAI,iBAAiB,KAAK,CAAC;YAAE,SAAS;QAEtC,MAAM,GAAG,GAAG,GAAG,OAAO,KAAK,OAAO,EAAE,CAAC;QAErC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,MAAM,GAAe,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAEjD,MAAM,KAAK,GAAG,IAAI,aAAa,EAAE,CAAC;IAClC,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IAExC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,wBAAwB,YAAY,EAAE,CAAC,CAAC;IAEpD,uEAAuE;IACvE,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,uBAAuB,OAAO,CAAC,MAAM,wDAAwD,CAAC,CAAC;AAC7G,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { IRegisteredSubjects } from '../../interfaces/IRegisteredSubjects.js';
2
2
  import type { ISubject } from '../../interfaces/ISubject.js';
3
+ import type { ITabTask } from '../../interfaces/ITabTask.js';
3
4
  import { PipelinePaths } from './PipelinePaths.js';
4
5
  /**
5
6
  * Thin file-system accessor that reads all JSON seed-data files used by the
@@ -26,6 +27,7 @@ export declare class DataRetriever {
26
27
  getSubjectsToBuild(): ISubject[];
27
28
  getScreensToBuild(): string[];
28
29
  getScreenComponentMeta(screenTypeId: string): Record<string, string>;
30
+ getTabTasks(): ITabTask[];
29
31
  getSeedDataDirectory(): string;
30
32
  private parseJsonFile;
31
33
  }
@@ -67,6 +67,13 @@ export class DataRetriever {
67
67
  }
68
68
  return result;
69
69
  }
70
+ getTabTasks() {
71
+ const tabTasksPath = this._paths.tabTasksJson;
72
+ if (!fs.existsSync(tabTasksPath)) {
73
+ return [];
74
+ }
75
+ return this.parseJsonFile(tabTasksPath);
76
+ }
70
77
  getSeedDataDirectory() {
71
78
  return this._paths.seedData;
72
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DataRetriever.js","sourceRoot":"","sources":["../../../artifact-builder/helpers/DataRetriever.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DataRetriever.js","sourceRoot":"","sources":["../../../artifact-builder/helpers/DataRetriever.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,8 @@ export declare class PipelinePaths {
25
25
  get screensToBuildJson(): string;
26
26
  /** `<consumer>/seed-data/registeredSubjects.json` – lives in the consumer project so it survives `npm install` */
27
27
  get registeredSubjectsJson(): string;
28
+ /** `<package>/seed-data/tab-tasks.json` */
29
+ get tabTasksJson(): string;
28
30
  /** `<package>/test-artifacts/` */
29
31
  get testArtifacts(): string;
30
32
  /** `<package>/test-artifacts/screens/` */
@@ -50,6 +50,10 @@ export class PipelinePaths {
50
50
  get registeredSubjectsJson() {
51
51
  return path.join(this._consumerRoot, 'seed-data', 'registeredSubjects.json');
52
52
  }
53
+ /** `<package>/seed-data/tab-tasks.json` */
54
+ get tabTasksJson() {
55
+ return path.join(this.seedData, 'tab-tasks.json');
56
+ }
53
57
  // ── Package root – generated artifacts ─────────────────────────────────
54
58
  /** `<package>/test-artifacts/` */
55
59
  get testArtifacts() {
@@ -1 +1 @@
1
- {"version":3,"file":"PipelinePaths.js","sourceRoot":"","sources":["../../../artifact-builder/helpers/PipelinePaths.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PipelinePaths.js","sourceRoot":"","sources":["../../../artifact-builder/helpers/PipelinePaths.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  export * from './ArtifactManager.js';
2
2
  export * from './ComponentClassModelBuilder.js';
3
+ export * from './CustomActionBarGenerator.js';
3
4
  export * from './helpers/index.js';
4
5
  export * from './InterfaceGenerator.js';
5
6
  export * from './ModelDataRefiner.js';
@@ -9,5 +10,6 @@ export * from './SubjectClassModelBuilder.js';
9
10
  export * from './SubjectComponentGenerator.js';
10
11
  export * from './SubjectGenerator.js';
11
12
  export * from './SubjectRegistration.js';
13
+ export * from './TaskDataBuilder.js';
12
14
  export * from './TsFileModel.js';
13
15
  export * from './TsFileSerializer.js';
@@ -1,5 +1,6 @@
1
1
  export * from './ArtifactManager.js';
2
2
  export * from './ComponentClassModelBuilder.js';
3
+ export * from './CustomActionBarGenerator.js';
3
4
  export * from './helpers/index.js';
4
5
  export * from './InterfaceGenerator.js';
5
6
  export * from './ModelDataRefiner.js';
@@ -9,6 +10,7 @@ export * from './SubjectClassModelBuilder.js';
9
10
  export * from './SubjectComponentGenerator.js';
10
11
  export * from './SubjectGenerator.js';
11
12
  export * from './SubjectRegistration.js';
13
+ export * from './TaskDataBuilder.js';
12
14
  export * from './TsFileModel.js';
13
15
  export * from './TsFileSerializer.js';
14
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../artifact-builder/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../artifact-builder/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC"}
@@ -37,7 +37,8 @@ export class ActionBarOverflowableObjects extends BaseComponentObjects {
37
37
  // Generic, prefix-based items: Tasks, Reports, Cube views, Prefilter buttons
38
38
  // Tasks: data-testid like: "actionbar__task__<something>"
39
39
  this.taskButtons = () => this.context.locator('[data-testid^="actionbar__task__"]');
40
- this.taskButtonById = (id) => this.context.getByTestId(`actionbar__task__${id}`);
40
+ // The model's snake_case task id is rendered kebab-case, so both forms of the id resolve
41
+ this.taskButtonById = (id) => this.context.getByTestId(`actionbar__task__${id.toLowerCase().replace(/_/g, '-')}`);
41
42
  this.taskButtonByLabel = (label) => this.context.locator('[data-testid^="actionbar__task__"]').filter({ hasText: label });
42
43
  // Reports: data-testid like "actionbar__report__<something>"
43
44
  this.reportButtons = () => this.context.locator('[data-testid^="actionbar__report__"]');
@@ -1 +1 @@
1
- {"version":3,"file":"ActionBarObjects.js","sourceRoot":"","sources":["../../../components/action-bar/ActionBarObjects.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ActionBarObjects.js","sourceRoot":"","sources":["../../../components/action-bar/ActionBarObjects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,MAAM,OAAO,4BAA6B,SAAQ,oBAAoB;IACpE,YAAY,IAAU,EAAE,UAA0B,IAAI;QACpD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAGvB,iBAAiB;QACV,gBAAW,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE1F,oBAAe,GAAG,GAAG,EAAE,CAC5B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,wEAAwE,CAAC,CAAC;QAE1F,iBAAY,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;QAE1E,+BAA+B;QACxB,cAAS,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QAE7D,eAAU,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAE/D,iBAAY,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;QAEnE,iBAAY,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;QAEnE,eAAU,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAE/D,iBAAY,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;QAEnE,kBAAa,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;QAErE,sBAAiB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;QAE9E,0BAAqB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;QAEnF,eAAU,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAE/D,2BAAsB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC;QAEzF,iBAAY,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;QAEnE,iBAAY,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;QAEnE,4BAAuB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC;QAE1F,qBAAgB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;QAE5E,uBAAkB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;QAEjF,2BAAsB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;QAEjF,6BAAwB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;QAEtF,yBAAoB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;QAE5E,mBAAc,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;QAExE,4BAAuB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;QAEtF,4BAAuB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;QAEtF,sBAAiB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;QAE9E,yBAAoB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAC;QAErF,yBAAoB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC;QAEtF,sBAAiB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;QAE9E,oBAAe,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;QAEjF,6EAA6E;QAC7E,0DAA0D;QACnD,gBAAW,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;QAEtF,yFAAyF;QAClF,mBAAc,GAAG,CAAC,EAAU,EAAE,EAAE,CACrC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAE/E,sBAAiB,GAAG,CAAC,KAAa,EAAE,EAAE,CAC3C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAExF,6DAA6D;QACtD,kBAAa,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;QAEnF,qBAAgB,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;QAExF,wBAAmB,GAAG,CAAC,KAAa,EAAE,EAAE,CAC7C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAE1F,oEAAoE;QAC7D,oBAAe,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;QAEvF,uBAAkB,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;QAE5F,0BAAqB,GAAG,CAAC,KAAa,EAAE,EAAE,CAC/C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAE5F,sFAAsF;QAC/E,wBAAmB,GAAG,CAAC,EAAU,EAAE,EAAE,CAC1C,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC,CAAC;QAErE,iBAAY,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAhG3E,CAAC;CAiGF;AAED,MAAM,OAAO,gBAAiB,SAAQ,4BAA4B;IAChE,YAAY,IAAU,EAAE,UAA0B,IAAI;QACpD,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAGhB,uBAAkB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAC;IAF3G,CAAC;CAGF"}
@@ -41,15 +41,63 @@ export declare class FilterPopup {
41
41
  fieldId: string;
42
42
  part: string;
43
43
  }): Promise<void>;
44
+ /**
45
+ * Enter a date into a filter date input from a canonical ISO string
46
+ * (`YYYY-MM-DD` or `YYYY-MM-DD HH:mm:ss`). Reads the app's active date locale,
47
+ * reorders the digits to the picker's expected order, types them sequentially,
48
+ * and blurs to commit — so the same ISO value applies the same real date under
49
+ * any locale. Use this instead of {@link setValue} for date/date-time parts
50
+ * (e.g. interval `date` inputs).
51
+ *
52
+ * @param args.fieldId - The filter field/column id.
53
+ * @param args.value - Canonical ISO date or date-time string.
54
+ * @param args.part - The value part to target (defaults to `date`).
55
+ */
56
+ setDate(args: {
57
+ fieldId: string;
58
+ value: string;
59
+ part?: string;
60
+ }): Promise<void>;
44
61
  openControl(fieldId: string, part: string): Promise<void>;
45
62
  openOperator(fieldId: string): Promise<void>;
46
63
  openTimeOperator(): Promise<void>;
47
- intervalSelector(colId: string): Locator;
48
- intervalSelectorInput(colId: string): Locator;
64
+ /**
65
+ * One of a date column's interval selectors. Universal 2026.3.11 and later add the next interval condition row
66
+ * as soon as a row has a value, so a column can have several.
67
+ *
68
+ * @param colId - The column id.
69
+ * @param options.index - Which of the column's interval selectors, counting from 0 at the top. Defaults to 0.
70
+ */
71
+ intervalSelector(colId: string, options?: {
72
+ index?: number;
73
+ }): Locator;
74
+ /**
75
+ * The input of one of a date column's interval selectors, see {@link intervalSelector}.
76
+ *
77
+ * @param colId - The column id.
78
+ * @param options.index - Which of the column's interval selectors, counting from 0 at the top. Defaults to 0.
79
+ */
80
+ intervalSelectorInput(colId: string, options?: {
81
+ index?: number;
82
+ }): Locator;
83
+ /**
84
+ * Opens one of a date column's interval selectors, see {@link intervalSelector}.
85
+ *
86
+ * @param colId - The column id.
87
+ * @param options.index - Which of the column's interval selectors, counting from 0 at the top. Defaults to 0.
88
+ * @param options.rowIndex - A row number of the advanced filter grid instead, as in its test ids. Wins over
89
+ * `index`. It also counts the other columns' rows, and it changes when the pop-up reopens with the active
90
+ * filters at the top, so `index` is easier to use.
91
+ */
49
92
  openInterval(colId: string, options?: {
93
+ index?: number;
50
94
  rowIndex?: number;
51
95
  }): Promise<void>;
96
+ /**
97
+ * Picks an interval in one of a date column's interval selectors, see {@link openInterval} for `options`.
98
+ */
52
99
  setInterval(colId: string, kind: IntervalType, options?: {
100
+ index?: number;
53
101
  rowIndex?: number;
54
102
  }): Promise<void>;
55
103
  autocompleteOption(key: AutocompleteKey): Locator;
@@ -1,3 +1,5 @@
1
+ import { isoToLocaleDigits } from '../../helpers/DateFormat.js';
2
+ import { getDateLocale } from '../../helpers/DateLocaleHelper.js';
1
3
  import { PopUpComponent } from '../pop-up/PopUpComponent.js';
2
4
  import { FilterPopupObjects } from './FilterPopupObjects.js';
3
5
  export class FilterPopup {
@@ -24,9 +26,15 @@ export class FilterPopup {
24
26
  await this.saveAsPrefilterPopup(name);
25
27
  }
26
28
  async saveAsPrefilterPopup(name) {
27
- await this.waitForOpen();
28
- await this._filterPopupObjects.prefilterNameInput().fill(name);
29
- await this._filterPopupObjects.saveButton().click();
29
+ const nameInput = this._filterPopupObjects.prefilterNameInput();
30
+ await nameInput.waitFor({ state: 'visible' });
31
+ await nameInput.fill(name);
32
+ await this._filterPopupObjects.prefilterSaveButton().click();
33
+ // "Save as prefilter" is a modal stacked on top of the filter popup, so saving unwinds
34
+ // TWO backdrops. Without waiting for both to detach this returns while a backdrop is
35
+ // still animating out, and the caller's next click gets intercepted.
36
+ await nameInput.waitFor({ state: 'hidden' });
37
+ await this._filterPopupObjects.applyFilterButton().waitFor({ state: 'hidden' });
30
38
  }
31
39
  async setAdvanced(enabled) {
32
40
  await this.waitForOpen();
@@ -75,6 +83,29 @@ export class FilterPopup {
75
83
  await this.waitForOpen();
76
84
  await this._filterPopupObjects.valueInput(args.fieldId, args.part).press('Tab');
77
85
  }
86
+ /**
87
+ * Enter a date into a filter date input from a canonical ISO string
88
+ * (`YYYY-MM-DD` or `YYYY-MM-DD HH:mm:ss`). Reads the app's active date locale,
89
+ * reorders the digits to the picker's expected order, types them sequentially,
90
+ * and blurs to commit — so the same ISO value applies the same real date under
91
+ * any locale. Use this instead of {@link setValue} for date/date-time parts
92
+ * (e.g. interval `date` inputs).
93
+ *
94
+ * @param args.fieldId - The filter field/column id.
95
+ * @param args.value - Canonical ISO date or date-time string.
96
+ * @param args.part - The value part to target (defaults to `date`).
97
+ */
98
+ async setDate(args) {
99
+ await this.waitForOpen();
100
+ const part = args.part ?? 'date';
101
+ const input = this._filterPopupObjects.valueInput(args.fieldId, part);
102
+ const locale = await getDateLocale(this.page);
103
+ const digits = isoToLocaleDigits(args.value, locale);
104
+ await input.click();
105
+ await input.press('ControlOrMeta+a');
106
+ await input.pressSequentially(digits);
107
+ await input.press('Tab');
108
+ }
78
109
  async openControl(fieldId, part) {
79
110
  await this.waitForOpen();
80
111
  await this._filterPopupObjects.fieldControl(fieldId, part).click();
@@ -87,21 +118,44 @@ export class FilterPopup {
87
118
  await this.waitForOpen();
88
119
  await this._filterPopupObjects.timeOperatorControl().click();
89
120
  }
90
- intervalSelector(colId) {
91
- return this._filterPopupObjects.intervalSelector(colId);
92
- }
93
- intervalSelectorInput(colId) {
94
- return this._filterPopupObjects.intervalSelectorInput(colId);
95
- }
121
+ /**
122
+ * One of a date column's interval selectors. Universal 2026.3.11 and later add the next interval condition row
123
+ * as soon as a row has a value, so a column can have several.
124
+ *
125
+ * @param colId - The column id.
126
+ * @param options.index - Which of the column's interval selectors, counting from 0 at the top. Defaults to 0.
127
+ */
128
+ intervalSelector(colId, options) {
129
+ return this._filterPopupObjects.intervalSelector(colId, options?.index);
130
+ }
131
+ /**
132
+ * The input of one of a date column's interval selectors, see {@link intervalSelector}.
133
+ *
134
+ * @param colId - The column id.
135
+ * @param options.index - Which of the column's interval selectors, counting from 0 at the top. Defaults to 0.
136
+ */
137
+ intervalSelectorInput(colId, options) {
138
+ return this._filterPopupObjects.intervalSelectorInput(colId, options?.index);
139
+ }
140
+ /**
141
+ * Opens one of a date column's interval selectors, see {@link intervalSelector}.
142
+ *
143
+ * @param colId - The column id.
144
+ * @param options.index - Which of the column's interval selectors, counting from 0 at the top. Defaults to 0.
145
+ * @param options.rowIndex - A row number of the advanced filter grid instead, as in its test ids. Wins over
146
+ * `index`. It also counts the other columns' rows, and it changes when the pop-up reopens with the active
147
+ * filters at the top, so `index` is easier to use.
148
+ */
96
149
  async openInterval(colId, options) {
97
150
  await this.waitForOpen();
98
- if (options?.rowIndex !== undefined) {
99
- await this._filterPopupObjects.intervalSelectorInputByRowIndex(options.rowIndex, colId).click();
100
- }
101
- else {
102
- await this._filterPopupObjects.intervalSelectorInput(colId).click();
103
- }
151
+ const input = options?.rowIndex !== undefined
152
+ ? this._filterPopupObjects.intervalSelectorInputByRowIndex(options.rowIndex, colId)
153
+ : this.intervalSelectorInput(colId, options);
154
+ await input.click();
104
155
  }
156
+ /**
157
+ * Picks an interval in one of a date column's interval selectors, see {@link openInterval} for `options`.
158
+ */
105
159
  async setInterval(colId, kind, options) {
106
160
  await this.openInterval(colId, options);
107
161
  await this.pickAutocomplete(kind);
@@ -1 +1 @@
1
- {"version":3,"file":"FilterPopup.js","sourceRoot":"","sources":["../../../components/filter/FilterPopup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FilterPopup.js","sourceRoot":"","sources":["../../../components/filter/FilterPopup.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,8 @@ export declare class FilterPopupObjects extends BaseComponentObjects {
12
12
  fieldInput: (fieldId: string) => Locator;
13
13
  fieldInputChip: (fieldId: string, value: string) => Locator;
14
14
  prefilterNameInput: () => Locator;
15
+ saveAsPopup: () => Locator;
16
+ prefilterSaveButton: () => Locator;
15
17
  saveAsOption: () => Locator;
16
18
  saveButton: () => Locator;
17
19
  valueInput: (fieldId: string, part: string) => Locator;
@@ -19,8 +21,8 @@ export declare class FilterPopupObjects extends BaseComponentObjects {
19
21
  fieldControl: (fieldId: string, part: string) => Locator;
20
22
  operatorControl: (fieldId: string) => Locator;
21
23
  timeOperatorControl: () => Locator;
22
- intervalSelector: (colId: string) => Locator;
23
- intervalSelectorInput: (colId: string) => Locator;
24
+ intervalSelector: (colId: string, index?: number) => Locator;
25
+ intervalSelectorInput: (colId: string, index?: number) => Locator;
24
26
  intervalSelectorByRowIndex: (rowIndex: number, colId: string) => Locator;
25
27
  intervalSelectorInputByRowIndex: (rowIndex: number, colId: string) => Locator;
26
28
  autocompleteOption: (key: AutocompleteKey) => Locator;
@@ -10,6 +10,11 @@ export class FilterPopupObjects extends BaseComponentObjects {
10
10
  this.fieldInput = (fieldId) => this.context.getByTestId(`form-field__${fieldId}__input`);
11
11
  this.fieldInputChip = (fieldId, value) => this.context.getByTestId(`form-field__${fieldId}__input`).getByTestId(`autocomplete-tag-${value}`);
12
12
  this.prefilterNameInput = () => this.context.getByTestId('prefilter__name__input');
13
+ this.saveAsPopup = () => this._page
14
+ .locator('[role="dialog"]')
15
+ .filter({ has: this._page.getByTestId('prefilter__name__input') })
16
+ .last();
17
+ this.prefilterSaveButton = () => this.saveAsPopup().getByRole('button', { name: 'Save' });
13
18
  this.saveAsOption = () => this._page.getByRole('menuitem', { name: 'Save' });
14
19
  this.saveButton = () => this._page.getByRole('button', { name: 'Save' });
15
20
  this.valueInput = (fieldId, part) => this.context.getByTestId(`form-field__${fieldId}__${part}__input`);
@@ -17,14 +22,23 @@ export class FilterPopupObjects extends BaseComponentObjects {
17
22
  this.fieldControl = (fieldId, part) => this.context.getByTestId(`form-field__${fieldId}__${part}__control`).getByRole('button', { name: 'Open' });
18
23
  this.operatorControl = (fieldId) => this.context.getByTestId(`form-field__${fieldId}__operator__control`).getByRole('button', { name: 'Open' });
19
24
  this.timeOperatorControl = () => this.context.getByTestId('form-field__event-time__operator__control').getByRole('button', { name: 'Open' });
20
- this.intervalSelector = (colId) => this.context.locator(`[data-testid$="__${colId}__select-interval"]`);
21
- this.intervalSelectorInput = (colId) => this.intervalSelector(colId).getByTestId('select-interval__input');
25
+ // Universal 2026.3.11 and later add the next date interval condition row as soon as a row has a value
26
+ // (Universal PR 21830), so a column can show several interval selectors. `index` counts only the column's
27
+ // own selectors, from the top. A row number in the test id also counts the other columns' rows, and it
28
+ // changes when the pop-up reopens with the active filters at the top.
29
+ this.intervalSelector = (colId, index = 0) => this.context.locator(`[data-testid$="__${colId}__select-interval"]`).nth(index);
30
+ this.intervalSelectorInput = (colId, index = 0) => this.intervalSelector(colId, index).getByTestId('select-interval__input');
22
31
  this.intervalSelectorByRowIndex = (rowIndex, colId) => this.context.getByTestId(`advanced-filter-grid__row${rowIndex}__${colId}__select-interval`);
23
32
  this.intervalSelectorInputByRowIndex = (rowIndex, colId) => this.intervalSelectorByRowIndex(rowIndex, colId).getByTestId('select-interval__input');
24
33
  this.autocompleteOption = (key) => this._page.getByTestId(`autocomplete-option-${key}`);
25
34
  this.emptySelectFieldRow = () => this.context.getByTestId('advanced-filter-grid__row-empty-select-field');
26
- this.emptySelectFieldRowButton = () => this.emptySelectFieldRow().getByRole('button');
27
- this.selectFieldButton = () => this._page.getByRole('button', { name: 'Select field' });
35
+ // The field picker is an MUI Select. Universal 2026.3.11 and later (MUI v6) render it with
36
+ // role="combobox", Universal 2026.3.10.1 and earlier (MUI 5.12.3) with role="button".
37
+ // Accept both so these selectors work on every supported Universal version.
38
+ this.emptySelectFieldRowButton = () => this.emptySelectFieldRow().getByRole('combobox').or(this.emptySelectFieldRow().getByRole('button'));
39
+ this.selectFieldButton = () => this._page
40
+ .getByRole('combobox', { name: 'Select field' })
41
+ .or(this._page.getByRole('button', { name: 'Select field' }));
28
42
  this.addFieldButton = () => this._page.getByRole('button', { name: 'Add field' });
29
43
  this.colIdOption = (field) => this._page.getByTestId(`col-id-${field}`);
30
44
  this._page = page;
@@ -1 +1 @@
1
- {"version":3,"file":"FilterPopupObjects.js","sourceRoot":"","sources":["../../../components/filter/FilterPopupObjects.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FilterPopupObjects.js","sourceRoot":"","sources":["../../../components/filter/FilterPopupObjects.ts"],"names":[],"mappings":"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"}
@@ -68,6 +68,17 @@ export declare class Grid {
68
68
  * Gets all unique cell values for a specified column by its column ID.
69
69
  */
70
70
  getCellValuesByColId(colId: string): Promise<string[]>;
71
+ /**
72
+ * Retrieves the cell in the grid's pinned bottom summary row for a specified column.
73
+ *
74
+ * Only present when the subject has grid summaries (count/sum) configured on the column.
75
+ */
76
+ getSummaryCellByColId(colId: string): Locator;
77
+ /**
78
+ * Gets the summary value for a specified column, or `null` when the subject has no
79
+ * grid summary configured for it.
80
+ */
81
+ getSummaryValueByColId(colId: string): Promise<string | null>;
71
82
  /**
72
83
  * Retrieves all column header values from the grid.
73
84
  *
@@ -106,6 +117,17 @@ export declare class Grid {
106
117
  * @returns {Locator} Locator for grid rows.
107
118
  */
108
119
  rows(): Locator;
120
+ /**
121
+ * Makes a row the active record by clicking one of its cells.
122
+ *
123
+ * Pass a read-only column. Clicking a row's centre, as `rows().nth(i).click()` does,
124
+ * lands on whichever cell happens to sit mid-row; on an auto-edit grid that opens an
125
+ * editor and dirties the record instead of selecting it.
126
+ *
127
+ * @param rowIndex Zero-based index of the row within the grid body.
128
+ * @param colId Column to click, e.g. the primary key column.
129
+ */
130
+ selectRowByIndex(rowIndex: number, colId: string): Promise<void>;
109
131
  /**
110
132
  * Verifies the number of records in the grid and checks for "No result" overlay if zero.
111
133
  * @param expectedRecordCount The expected number of records.
@@ -100,6 +100,26 @@ export class Grid {
100
100
  }
101
101
  return Array.from(collected);
102
102
  }
103
+ /**
104
+ * Retrieves the cell in the grid's pinned bottom summary row for a specified column.
105
+ *
106
+ * Only present when the subject has grid summaries (count/sum) configured on the column.
107
+ */
108
+ getSummaryCellByColId(colId) {
109
+ return this._gridObjects.summaryCellsByColumnId(colId);
110
+ }
111
+ /**
112
+ * Gets the summary value for a specified column, or `null` when the subject has no
113
+ * grid summary configured for it.
114
+ */
115
+ async getSummaryValueByColId(colId) {
116
+ const summaryCell = this._gridObjects.summaryCellsByColumnId(colId);
117
+ if ((await summaryCell.count()) === 0) {
118
+ return null;
119
+ }
120
+ const value = await summaryCell.first().textContent();
121
+ return value === null ? null : value.trim();
122
+ }
103
123
  /**
104
124
  * Retrieves all column header values from the grid.
105
125
  *
@@ -157,6 +177,19 @@ export class Grid {
157
177
  rows() {
158
178
  return this._gridObjects.rows();
159
179
  }
180
+ /**
181
+ * Makes a row the active record by clicking one of its cells.
182
+ *
183
+ * Pass a read-only column. Clicking a row's centre, as `rows().nth(i).click()` does,
184
+ * lands on whichever cell happens to sit mid-row; on an auto-edit grid that opens an
185
+ * editor and dirties the record instead of selecting it.
186
+ *
187
+ * @param rowIndex Zero-based index of the row within the grid body.
188
+ * @param colId Column to click, e.g. the primary key column.
189
+ */
190
+ async selectRowByIndex(rowIndex, colId) {
191
+ await this._gridObjects.cellByRowIndexAndColumnId(rowIndex, colId).click();
192
+ }
160
193
  /**
161
194
  * Verifies the number of records in the grid and checks for "No result" overlay if zero.
162
195
  * @param expectedRecordCount The expected number of records.
@@ -171,7 +204,8 @@ export class Grid {
171
204
  }
172
205
  }
173
206
  await pollUntil(() => this.rows().count(), {
174
- predicate: (n) => n === expectedRecordCount + 1 // +1 to account for header row
207
+ predicate: (n) => n === expectedRecordCount,
208
+ description: `the grid to show ${expectedRecordCount} records`
175
209
  });
176
210
  }
177
211
  /**
@@ -180,7 +214,7 @@ export class Grid {
180
214
  */
181
215
  async hasNoRowsOverlay() {
182
216
  const overlay = this._gridObjects.noRowsOverlay();
183
- const hasCorrectWording = await pollUntil(async () => (await overlay.textContent())?.trim().includes('No result') ?? false, { predicate: Boolean });
217
+ const hasCorrectWording = await pollUntil(async () => (await overlay.textContent())?.trim().includes('No result') ?? false, { predicate: Boolean, description: 'the grid to show the "No result" overlay' });
184
218
  return hasCorrectWording && (await overlay.isVisible());
185
219
  }
186
220
  }