d5-testing-library 2.0.0-alpha.3 → 2.0.0-alpha.6

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/README.md CHANGED
@@ -1 +1 @@
1
- //
1
+ //.
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  FormEdit
3
- } from "./chunk-WZKO7TMT.mjs";
3
+ } from "./chunk-N4PDOG6U.mjs";
4
4
  export {
5
5
  FormEdit as default
6
6
  };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ListForm
3
- } from "./chunk-WZKO7TMT.mjs";
3
+ } from "./chunk-N4PDOG6U.mjs";
4
4
  export {
5
5
  ListForm as default
6
6
  };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  TreeView
3
- } from "./chunk-WZKO7TMT.mjs";
3
+ } from "./chunk-N4PDOG6U.mjs";
4
4
  export {
5
5
  TreeView as default
6
6
  };
@@ -2941,6 +2941,15 @@ function createSubSystemTestId(itemName) {
2941
2941
  function createEditorButtonTestId(itemName) {
2942
2942
  return `${"editor-button" /* EDITOR_BUTTON */}-${itemName}`;
2943
2943
  }
2944
+ function createLabelFieldTestId(formName, itemName) {
2945
+ return `${"label" /* LABEL */}-${createFieldTestId(formName, itemName)}`;
2946
+ }
2947
+ function createLabelDocFilterTestId(formName, itemName) {
2948
+ return `${"label" /* LABEL */}-${createDocFilterTestId(formName, itemName)}`;
2949
+ }
2950
+ function createLabelLayoutFilterTestId(formName, itemName) {
2951
+ return `${"label" /* LABEL */}-${createLayoutFilterTestId(formName, itemName)}`;
2952
+ }
2944
2953
 
2945
2954
  // src/pageObjects/AbstractElementWithParent.ts
2946
2955
  var AbstractElementWithParent = class extends AbstractElement {
@@ -3263,7 +3272,7 @@ var AbstractForm = class extends AbstractPage {
3263
3272
  async exists() {
3264
3273
  try {
3265
3274
  const container = this.page.locator(this.containerCssSelector);
3266
- await waitElementIsVisible_default({ locator: container });
3275
+ await waitElementIsVisible_default({ locator: container, timeout: 3e3 });
3267
3276
  return true;
3268
3277
  } catch (error) {
3269
3278
  return false;
@@ -3308,15 +3317,15 @@ async function classDependencyInjector(formType) {
3308
3317
  let SubFormFactoryClass;
3309
3318
  switch (formType) {
3310
3319
  case "1" /* LIST */:
3311
- SubFormFactoryClass = (await import("./ListForm-BE52U7IR.mjs")).default;
3320
+ SubFormFactoryClass = (await import("./ListForm-H7E4GQWM.mjs")).default;
3312
3321
  break;
3313
3322
  case "3" /* TREE */:
3314
- SubFormFactoryClass = (await import("./TreeView-AMVY2DII.mjs")).default;
3323
+ SubFormFactoryClass = (await import("./TreeView-Q7YDCHQZ.mjs")).default;
3315
3324
  break;
3316
3325
  case "2" /* EDIT */:
3317
3326
  case "99" /* FREE_FORM */:
3318
3327
  case "4" /* REPORT */:
3319
- SubFormFactoryClass = (await import("./FormEdit-FIYSIGH2.mjs")).default;
3328
+ SubFormFactoryClass = (await import("./FormEdit-KTRSSTSI.mjs")).default;
3320
3329
  break;
3321
3330
  default:
3322
3331
  throw new Error(`Unsupported form type ${formType}`);
@@ -4157,7 +4166,12 @@ var FormFilterField = class extends AbstractEditor {
4157
4166
  formName;
4158
4167
  name;
4159
4168
  constructor(parentCssSelector, formName, name, page) {
4160
- super(parentCssSelector, byTestIdCssSelector(createLayoutFilterTestId(formName, name)), page);
4169
+ super({
4170
+ parentCssSelector,
4171
+ elementCssSelector: byTestIdCssSelector(createLayoutFilterTestId(formName, name)),
4172
+ titleCssSelector: byTestIdCssSelector(createLabelLayoutFilterTestId(formName, name)),
4173
+ page
4174
+ });
4161
4175
  this.formName = formName;
4162
4176
  this.name = name;
4163
4177
  }
@@ -4261,7 +4275,12 @@ var PanelFilterField = class extends AbstractEditor {
4261
4275
  formName;
4262
4276
  name;
4263
4277
  constructor(parentCssSelector, formName, name, page) {
4264
- super(parentCssSelector, byTestIdCssSelector(createDocFilterTestId(formName, name)), page);
4278
+ super({
4279
+ parentCssSelector,
4280
+ elementCssSelector: byTestIdCssSelector(createDocFilterTestId(formName, name)),
4281
+ titleCssSelector: byTestIdCssSelector(createLabelDocFilterTestId(formName, name)),
4282
+ page
4283
+ });
4265
4284
  this.formName = formName;
4266
4285
  this.name = name;
4267
4286
  }
@@ -5001,11 +5020,7 @@ var SingleDateEditor = class extends BaseDateEditor {
5001
5020
  }
5002
5021
  async setValue(value) {
5003
5022
  if (value instanceof Date) {
5004
- await wait(async () => {
5005
- await this.setDateValue(value);
5006
- const updatedValue = await this.getValue();
5007
- return updatedValue.toDateString() === value.toDateString();
5008
- }, this.page);
5023
+ await this.setDateValue(value);
5009
5024
  } else {
5010
5025
  throw new Error(`Value is incorrect. It should be a Date object`);
5011
5026
  }
@@ -5207,11 +5222,25 @@ var EditorButton = class extends AbstractElementWithParent {
5207
5222
  }
5208
5223
  };
5209
5224
 
5225
+ // src/pageObjects/elements/EditorTitle.ts
5226
+ var CAPTION_TEXT_CLASS = " .caption-text";
5227
+ var EditorTitle = class extends AbstractElementWithParent {
5228
+ constructor({ parentCssSelector, elementCssSelector, page }) {
5229
+ super(parentCssSelector, elementCssSelector, page);
5230
+ }
5231
+ async getTitle() {
5232
+ const captionElement = this.getLocator().locator(CAPTION_TEXT_CLASS);
5233
+ return captionElement.innerText();
5234
+ }
5235
+ };
5236
+
5210
5237
  // src/pageObjects/elements/AbstractEditor.ts
5211
5238
  var AbstractEditor = class extends AbstractElementWithParent {
5212
5239
  editor;
5213
- constructor(parentCssSelector, elementCssSelector, page) {
5240
+ _titleCssSelector;
5241
+ constructor({ parentCssSelector, elementCssSelector, titleCssSelector, page }) {
5214
5242
  super(parentCssSelector, elementCssSelector, page);
5243
+ this._titleCssSelector = titleCssSelector;
5215
5244
  }
5216
5245
  async initEditor() {
5217
5246
  if (!this.editor) {
@@ -5307,12 +5336,30 @@ var AbstractEditor = class extends AbstractElementWithParent {
5307
5336
  button(name) {
5308
5337
  return new EditorButton(this.getFullCssSelector(), name, this.page);
5309
5338
  }
5339
+ /**
5340
+ * Повертає загловок едітора
5341
+ * @example
5342
+ * expect(await formEdit.field('NumberFld').title()).toBe('Title1');
5343
+ * expect(await formEdit.field('TextFld').title()).toBe('Title2`);
5344
+ */
5345
+ async title() {
5346
+ return new EditorTitle({
5347
+ elementCssSelector: this._titleCssSelector,
5348
+ parentCssSelector: this.parentCssSelector,
5349
+ page: this.page
5350
+ }).getTitle();
5351
+ }
5310
5352
  };
5311
5353
 
5312
5354
  // src/pageObjects/elements/FormField.ts
5313
5355
  var FormField = class extends AbstractEditor {
5314
5356
  constructor(parentCssSelector, formName, name, page) {
5315
- super(parentCssSelector, byTestIdCssSelector(createFieldTestId(formName, name)), page);
5357
+ super({
5358
+ parentCssSelector,
5359
+ elementCssSelector: byTestIdCssSelector(createFieldTestId(formName, name)),
5360
+ titleCssSelector: byTestIdCssSelector(createLabelFieldTestId(formName, name)),
5361
+ page
5362
+ });
5316
5363
  }
5317
5364
  };
5318
5365
 
@@ -5850,7 +5897,10 @@ var ToolbarItem = class extends AbstractElementWithParent {
5850
5897
  async click() {
5851
5898
  try {
5852
5899
  await this.init();
5853
- await waitElementIsVisible_default({ locator: this._button.getLocator() });
5900
+ await wait(async () => {
5901
+ const element = this._button.getLocator();
5902
+ return await element.isEnabled() && await element.isVisible();
5903
+ }, this.page);
5854
5904
  await this._button.click();
5855
5905
  } catch (error) {
5856
5906
  throw new Error(`Cannot click on toolbar item: ${this._itemName}`);
@@ -5910,7 +5960,12 @@ var FormToolbar = class extends AbstractElementWithParent {
5910
5960
  // src/pageObjects/elements/Filters/HeaderFilterField.ts
5911
5961
  var HeaderFilterField = class extends AbstractEditor {
5912
5962
  constructor(parentCssSelector, formName, name, page) {
5913
- super(parentCssSelector, byTestIdCssSelector(createHeaderFilterTestId(formName, name)), page);
5963
+ super({
5964
+ parentCssSelector,
5965
+ elementCssSelector: byTestIdCssSelector(createHeaderFilterTestId(formName, name)),
5966
+ titleCssSelector: "",
5967
+ page
5968
+ });
5914
5969
  }
5915
5970
  async getValue() {
5916
5971
  return super.getValue();
@@ -1057,7 +1057,6 @@ var init_SingleDateEditor = __esm({
1057
1057
  init_BaseDateEditor();
1058
1058
  init_utils();
1059
1059
  init_ClearButtonStrategy();
1060
- init_src();
1061
1060
  SingleDateEditor = class extends BaseDateEditor {
1062
1061
  constructor(parentCssSelector, elementCssSelector, page) {
1063
1062
  super(parentCssSelector, elementCssSelector, page);
@@ -1080,11 +1079,7 @@ var init_SingleDateEditor = __esm({
1080
1079
  }
1081
1080
  async setValue(value) {
1082
1081
  if (value instanceof Date) {
1083
- await wait(async () => {
1084
- await this.setDateValue(value);
1085
- const updatedValue = await this.getValue();
1086
- return updatedValue.toDateString() === value.toDateString();
1087
- }, this.page);
1082
+ await this.setDateValue(value);
1088
1083
  } else {
1089
1084
  throw new Error(`Value is incorrect. It should be a Date object`);
1090
1085
  }
@@ -1385,6 +1380,15 @@ function createSubSystemTestId(itemName) {
1385
1380
  function createEditorButtonTestId(itemName) {
1386
1381
  return `${"editor-button" /* EDITOR_BUTTON */}-${itemName}`;
1387
1382
  }
1383
+ function createLabelFieldTestId(formName, itemName) {
1384
+ return `${"label" /* LABEL */}-${createFieldTestId(formName, itemName)}`;
1385
+ }
1386
+ function createLabelDocFilterTestId(formName, itemName) {
1387
+ return `${"label" /* LABEL */}-${createDocFilterTestId(formName, itemName)}`;
1388
+ }
1389
+ function createLabelLayoutFilterTestId(formName, itemName) {
1390
+ return `${"label" /* LABEL */}-${createLayoutFilterTestId(formName, itemName)}`;
1391
+ }
1388
1392
  var init_createDataTestId = __esm({
1389
1393
  "src/utils/createDataTestId.ts"() {
1390
1394
  "use strict";
@@ -1863,7 +1867,7 @@ var init_AbstractForm = __esm({
1863
1867
  async exists() {
1864
1868
  try {
1865
1869
  const container = this.page.locator(this.containerCssSelector);
1866
- await waitElementIsVisible_default({ locator: container });
1870
+ await waitElementIsVisible_default({ locator: container, timeout: 3e3 });
1867
1871
  return true;
1868
1872
  } catch (error) {
1869
1873
  return false;
@@ -2230,6 +2234,25 @@ var init_EditorButton = __esm({
2230
2234
  }
2231
2235
  });
2232
2236
 
2237
+ // src/pageObjects/elements/EditorTitle.ts
2238
+ var CAPTION_TEXT_CLASS, EditorTitle;
2239
+ var init_EditorTitle = __esm({
2240
+ "src/pageObjects/elements/EditorTitle.ts"() {
2241
+ "use strict";
2242
+ init_AbstractElementWithParent();
2243
+ CAPTION_TEXT_CLASS = " .caption-text";
2244
+ EditorTitle = class extends AbstractElementWithParent {
2245
+ constructor({ parentCssSelector, elementCssSelector, page }) {
2246
+ super(parentCssSelector, elementCssSelector, page);
2247
+ }
2248
+ async getTitle() {
2249
+ const captionElement = this.getLocator().locator(CAPTION_TEXT_CLASS);
2250
+ return captionElement.innerText();
2251
+ }
2252
+ };
2253
+ }
2254
+ });
2255
+
2233
2256
  // src/pageObjects/elements/AbstractEditor.ts
2234
2257
  var AbstractEditor;
2235
2258
  var init_AbstractEditor2 = __esm({
@@ -2238,10 +2261,13 @@ var init_AbstractEditor2 = __esm({
2238
2261
  init_AbstractElementWithParent();
2239
2262
  init_Editors();
2240
2263
  init_EditorButton();
2264
+ init_EditorTitle();
2241
2265
  AbstractEditor = class extends AbstractElementWithParent {
2242
2266
  editor;
2243
- constructor(parentCssSelector, elementCssSelector, page) {
2267
+ _titleCssSelector;
2268
+ constructor({ parentCssSelector, elementCssSelector, titleCssSelector, page }) {
2244
2269
  super(parentCssSelector, elementCssSelector, page);
2270
+ this._titleCssSelector = titleCssSelector;
2245
2271
  }
2246
2272
  async initEditor() {
2247
2273
  if (!this.editor) {
@@ -2337,6 +2363,19 @@ var init_AbstractEditor2 = __esm({
2337
2363
  button(name) {
2338
2364
  return new EditorButton(this.getFullCssSelector(), name, this.page);
2339
2365
  }
2366
+ /**
2367
+ * Повертає загловок едітора
2368
+ * @example
2369
+ * expect(await formEdit.field('NumberFld').title()).toBe('Title1');
2370
+ * expect(await formEdit.field('TextFld').title()).toBe('Title2`);
2371
+ */
2372
+ async title() {
2373
+ return new EditorTitle({
2374
+ elementCssSelector: this._titleCssSelector,
2375
+ parentCssSelector: this.parentCssSelector,
2376
+ page: this.page
2377
+ }).getTitle();
2378
+ }
2340
2379
  };
2341
2380
  }
2342
2381
  });
@@ -2351,7 +2390,12 @@ var init_FormField = __esm({
2351
2390
  init_AbstractEditor2();
2352
2391
  FormField = class extends AbstractEditor {
2353
2392
  constructor(parentCssSelector, formName, name, page) {
2354
- super(parentCssSelector, byTestIdCssSelector(createFieldTestId(formName, name)), page);
2393
+ super({
2394
+ parentCssSelector,
2395
+ elementCssSelector: byTestIdCssSelector(createFieldTestId(formName, name)),
2396
+ titleCssSelector: byTestIdCssSelector(createLabelFieldTestId(formName, name)),
2397
+ page
2398
+ });
2355
2399
  }
2356
2400
  };
2357
2401
  }
@@ -2956,6 +3000,7 @@ var init_ToolbarItem = __esm({
2956
3000
  init_locators();
2957
3001
  init_ToolbarMenu();
2958
3002
  init_waitElementIsVisible();
3003
+ init_wait();
2959
3004
  GROUP_BUTTON_CLASS = "toolbar-group-button";
2960
3005
  toolbarItemSelector = (form, name) => byTestIdCssSelector(`ftb-${form}-${name}`);
2961
3006
  ToolbarItem = class extends AbstractElementWithParent {
@@ -2979,7 +3024,10 @@ var init_ToolbarItem = __esm({
2979
3024
  async click() {
2980
3025
  try {
2981
3026
  await this.init();
2982
- await waitElementIsVisible_default({ locator: this._button.getLocator() });
3027
+ await wait(async () => {
3028
+ const element = this._button.getLocator();
3029
+ return await element.isEnabled() && await element.isVisible();
3030
+ }, this.page);
2983
3031
  await this._button.click();
2984
3032
  } catch (error) {
2985
3033
  throw new Error(`Cannot click on toolbar item: ${this._itemName}`);
@@ -3154,7 +3202,12 @@ var init_FormFilterField = __esm({
3154
3202
  formName;
3155
3203
  name;
3156
3204
  constructor(parentCssSelector, formName, name, page) {
3157
- super(parentCssSelector, byTestIdCssSelector(createLayoutFilterTestId(formName, name)), page);
3205
+ super({
3206
+ parentCssSelector,
3207
+ elementCssSelector: byTestIdCssSelector(createLayoutFilterTestId(formName, name)),
3208
+ titleCssSelector: byTestIdCssSelector(createLabelLayoutFilterTestId(formName, name)),
3209
+ page
3210
+ });
3158
3211
  this.formName = formName;
3159
3212
  this.name = name;
3160
3213
  }
@@ -3268,7 +3321,12 @@ var init_PanelFilterField = __esm({
3268
3321
  formName;
3269
3322
  name;
3270
3323
  constructor(parentCssSelector, formName, name, page) {
3271
- super(parentCssSelector, byTestIdCssSelector(createDocFilterTestId(formName, name)), page);
3324
+ super({
3325
+ parentCssSelector,
3326
+ elementCssSelector: byTestIdCssSelector(createDocFilterTestId(formName, name)),
3327
+ titleCssSelector: byTestIdCssSelector(createLabelDocFilterTestId(formName, name)),
3328
+ page
3329
+ });
3272
3330
  this.formName = formName;
3273
3331
  this.name = name;
3274
3332
  }
@@ -3436,7 +3494,12 @@ var init_HeaderFilterField = __esm({
3436
3494
  init_AbstractEditor2();
3437
3495
  HeaderFilterField = class extends AbstractEditor {
3438
3496
  constructor(parentCssSelector, formName, name, page) {
3439
- super(parentCssSelector, byTestIdCssSelector(createHeaderFilterTestId(formName, name)), page);
3497
+ super({
3498
+ parentCssSelector,
3499
+ elementCssSelector: byTestIdCssSelector(createHeaderFilterTestId(formName, name)),
3500
+ titleCssSelector: "",
3501
+ page
3502
+ });
3440
3503
  }
3441
3504
  async getValue() {
3442
3505
  return super.getValue();
@@ -347,7 +347,13 @@ declare class EditorButton extends AbstractElementWithParent {
347
347
 
348
348
  declare class AbstractEditor extends AbstractElementWithParent implements Editor {
349
349
  protected editor: Editor;
350
- constructor(parentCssSelector: string, elementCssSelector: string, page: Page);
350
+ protected _titleCssSelector: string;
351
+ constructor({ parentCssSelector, elementCssSelector, titleCssSelector, page }: {
352
+ parentCssSelector: string;
353
+ elementCssSelector: string;
354
+ titleCssSelector: string;
355
+ page: Page;
356
+ });
351
357
  protected initEditor(): Promise<void>;
352
358
  /**
353
359
  * Возвращает значение в поле
@@ -404,6 +410,13 @@ declare class AbstractEditor extends AbstractElementWithParent implements Editor
404
410
  * await form.field('Name').button('editorButton).click()
405
411
  */
406
412
  button(name: string): EditorButton;
413
+ /**
414
+ * Повертає загловок едітора
415
+ * @example
416
+ * expect(await formEdit.field('NumberFld').title()).toBe('Title1');
417
+ * expect(await formEdit.field('TextFld').title()).toBe('Title2`);
418
+ */
419
+ title(): Promise<string>;
407
420
  }
408
421
 
409
422
  declare class FormField extends AbstractEditor {
@@ -347,7 +347,13 @@ declare class EditorButton extends AbstractElementWithParent {
347
347
 
348
348
  declare class AbstractEditor extends AbstractElementWithParent implements Editor {
349
349
  protected editor: Editor;
350
- constructor(parentCssSelector: string, elementCssSelector: string, page: Page);
350
+ protected _titleCssSelector: string;
351
+ constructor({ parentCssSelector, elementCssSelector, titleCssSelector, page }: {
352
+ parentCssSelector: string;
353
+ elementCssSelector: string;
354
+ titleCssSelector: string;
355
+ page: Page;
356
+ });
351
357
  protected initEditor(): Promise<void>;
352
358
  /**
353
359
  * Возвращает значение в поле
@@ -404,6 +410,13 @@ declare class AbstractEditor extends AbstractElementWithParent implements Editor
404
410
  * await form.field('Name').button('editorButton).click()
405
411
  */
406
412
  button(name: string): EditorButton;
413
+ /**
414
+ * Повертає загловок едітора
415
+ * @example
416
+ * expect(await formEdit.field('NumberFld').title()).toBe('Title1');
417
+ * expect(await formEdit.field('TextFld').title()).toBe('Title2`);
418
+ */
419
+ title(): Promise<string>;
407
420
  }
408
421
 
409
422
  declare class FormField extends AbstractEditor {
@@ -23,7 +23,7 @@ import {
23
23
  readonlyLocator,
24
24
  wait,
25
25
  waitElementIsVisible_default
26
- } from "./chunk-WZKO7TMT.mjs";
26
+ } from "./chunk-N4PDOG6U.mjs";
27
27
  export {
28
28
  AbstractPage,
29
29
  ApiRequest,
@@ -23,7 +23,7 @@ import {
23
23
  readonlyLocator,
24
24
  wait,
25
25
  waitElementIsVisible_default
26
- } from "./chunk-WZKO7TMT.mjs";
26
+ } from "./chunk-N4PDOG6U.mjs";
27
27
  export {
28
28
  AbstractPage,
29
29
  ApiRequest,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "d5-testing-library",
3
- "version": "2.0.0-alpha.3",
3
+ "version": "2.0.0-alpha.6",
4
4
  "description": "e2e testing D5 projects",
5
5
  "main": "dist/cjs/d5-testing-library.cjs",
6
6
  "module": "dist/d5-testing-library.legacy-esm.js",