d5-testing-library 1.5.0 → 1.7.0-alpha.0

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.
@@ -1,21 +1,22 @@
1
1
  import {
2
2
  TreeView
3
- } from "./chunk-44JIUIEW.mjs";
3
+ } from "./chunk-M7ZEJQ34.mjs";
4
4
  import {
5
5
  FilterPanel,
6
6
  FormFilterField,
7
7
  ListForm,
8
8
  PanelFilterField
9
- } from "./chunk-NWWYF43G.mjs";
9
+ } from "./chunk-PVVYHCDQ.mjs";
10
10
  import {
11
11
  FormEdit
12
- } from "./chunk-FP26UOTI.mjs";
12
+ } from "./chunk-H6LCUGIP.mjs";
13
13
  import {
14
14
  AbstractButton,
15
15
  AbstractElement,
16
16
  AbstractElementWithParent,
17
17
  AbstractPage,
18
18
  ControlClass,
19
+ DX_CLEAR_BUTTON_AREA,
19
20
  FormField,
20
21
  NumberEditor,
21
22
  TextEditor,
@@ -23,11 +24,13 @@ import {
23
24
  byTestIdCssSelector,
24
25
  click,
25
26
  config,
27
+ createSubSystemTestId,
26
28
  editorFactory,
29
+ fixElementStaleError,
27
30
  readonlyLocator,
28
31
  wait,
29
32
  waitElementIsVisible
30
- } from "./chunk-VWNH6HVN.mjs";
33
+ } from "./chunk-ISIVPVER.mjs";
31
34
 
32
35
  // src/pageObjects/pages/LoginPage.ts
33
36
  var LOGIN_PATH = "/login";
@@ -103,6 +106,36 @@ var SubsystemsPanelHeader = class extends AbstractElementWithParent {
103
106
  };
104
107
 
105
108
  // src/pageObjects/elements/SubsystemsPanel/SubsystemsPanel.ts
109
+ import { By as By3 } from "selenium-webdriver";
110
+
111
+ // src/pageObjects/elements/SubsystemsPanel/SubsystemItem.ts
112
+ var SubsystemItem = class {
113
+ bySelector;
114
+ driver;
115
+ constructor({ driver, bySelector }) {
116
+ this.bySelector = bySelector;
117
+ this.driver = driver;
118
+ }
119
+ async getElement() {
120
+ return fixElementStaleError(this.bySelector, this.driver);
121
+ }
122
+ async getTitle() {
123
+ const el = await this.getElement();
124
+ return await el.getAttribute("data-title");
125
+ }
126
+ async click() {
127
+ const el = await this.getElement();
128
+ await click(el, this.driver);
129
+ }
130
+ };
131
+
132
+ // src/pageObjects/elements/SubsystemsPanel/SubsystemsPanel.ts
133
+ var SEARCH_ITEM_SELECTOR = "search-item";
134
+ var BACK_BUTTON_SELECTOR = "subsystem-back-item";
135
+ var SEARCH_INPUT_SELECTOR = "search-subsystem-input";
136
+ var byTitleCssSelector = (title) => {
137
+ return `span[data-title="${title}"]`;
138
+ };
106
139
  var SubsystemsPanel = class extends AbstractElement {
107
140
  header;
108
141
  constructor(driver) {
@@ -114,10 +147,105 @@ var SubsystemsPanel = class extends AbstractElement {
114
147
  await wait(async () => await title.getText() != "", this.driver);
115
148
  return title.getText();
116
149
  }
150
+ getSearchComponent() {
151
+ return new TextEditor("#aside", byTestIdCssSelector(SEARCH_INPUT_SELECTOR));
152
+ }
153
+ /**
154
+ * Находит сабсистему по заголовку
155
+ * @example
156
+ * const subsystemsPanel= new SubsystemsPanel();
157
+ * //...
158
+ * await subsystemsPanel.search('SubSystemTitle');
159
+ */
160
+ async search(title) {
161
+ const searchComponent = this.getSearchComponent();
162
+ await searchComponent.setValue(title);
163
+ await wait(
164
+ async () => {
165
+ const findElement = await this.itemByTitle(title).getElement();
166
+ const classes = await findElement.getAttribute("class");
167
+ return classes.includes(SEARCH_ITEM_SELECTOR);
168
+ },
169
+ this.driver,
170
+ `Cannot find element: ${title}`
171
+ );
172
+ }
173
+ /**
174
+ * Очищает поиск сабсистем
175
+ * @example
176
+ * const subsystemsPanel= new SubsystemsPanel();
177
+ * //...
178
+ * await subsystemsPanel.searchClear();
179
+ */
180
+ async searchClear() {
181
+ const clearBtnSelector = `#aside ${byTestIdCssSelector(SEARCH_INPUT_SELECTOR)} .${DX_CLEAR_BUTTON_AREA}`;
182
+ const clearBtn = await this.driver.findElement(By3.css(clearBtnSelector));
183
+ if (await clearBtn.isDisplayed()) {
184
+ await click(clearBtn, this.driver);
185
+ }
186
+ }
187
+ /**
188
+ * Возвращает сабсистему по имени
189
+ * @example
190
+ * const subsystemsPanel= new SubsystemsPanel();
191
+ * //...
192
+ * const subsystem = subsystemsPanel.item('SubSystemName');
193
+ */
194
+ item(name) {
195
+ const elementCSS = createSubSystemTestId(name);
196
+ return new SubsystemItem({ driver: this.driver, bySelector: By3.css(`${byTestIdCssSelector(elementCSS, "span")}`) });
197
+ }
198
+ /**
199
+ * Возвращает сабсистему по заголовку
200
+ * @example
201
+ * const subsystemsPanel= new SubsystemsPanel();
202
+ * //...
203
+ * const subsystem = subsystemsPanel.itemByTitle('SubSystemTitle');
204
+ */
205
+ itemByTitle(title) {
206
+ return new SubsystemItem({ driver: this.driver, bySelector: By3.css(byTitleCssSelector(title)) });
207
+ }
208
+ /**
209
+ * Возвращается на уровень выше по сабсистемам
210
+ * @example
211
+ * const subsystemsPanel= new SubsystemsPanel();
212
+ * //...
213
+ * wait subsystemsPanel.back();
214
+ */
215
+ async back() {
216
+ const backButton = this.driver.findElement(By3.css(`#aside .${BACK_BUTTON_SELECTOR}`));
217
+ await waitElementIsVisible(
218
+ {
219
+ element: backButton,
220
+ driver: this.driver
221
+ }
222
+ );
223
+ await click(backButton, this.driver);
224
+ }
225
+ };
226
+
227
+ // src/pageObjects/elements/Forms/ReportForm.ts
228
+ import { By as By4 } from "selenium-webdriver";
229
+ var ReportForm = class extends FormEdit {
230
+ constructor(driver) {
231
+ super(driver);
232
+ this.popupContainerCssSelector = `.popup .form-report-${this.formName}`;
233
+ this.saveButtonBy = By4.id("button-apply");
234
+ }
235
+ /**
236
+ * Знаходить поле/фільтр у формі репорту за ім'ям
237
+ * @example
238
+ * const formReport = new MyForm();
239
+ * //...
240
+ * expect(await formReport.filterField('Name').getValue()).toBe('test value');
241
+ */
242
+ filterField(name) {
243
+ return super.field(name);
244
+ }
117
245
  };
118
246
 
119
247
  // src/pageObjects/elements/Dialog.ts
120
- import { By as By3 } from "selenium-webdriver";
248
+ import { By as By5 } from "selenium-webdriver";
121
249
  var DIALOG_CLASS = ".d5-dialog";
122
250
  var DIALOG_TITLE_CLASS = ".dialog__title";
123
251
  var DIALOG_TEXT_CLASS = ".dialog__text";
@@ -131,7 +259,7 @@ var DialogButton = class extends AbstractButton {
131
259
  }
132
260
  async getElement() {
133
261
  const panel = await super.getElement();
134
- return panel.findElement(By3.xpath(buttonByTextXpath(this.text)));
262
+ return panel.findElement(By5.xpath(buttonByTextXpath(this.text)));
135
263
  }
136
264
  buttonNotDisplayedError() {
137
265
  return `Dialog button ${this.text} cannot be clicked. It is not displayed or it is disabled`;
@@ -151,11 +279,11 @@ var Dialog = class extends AbstractElement {
151
279
  return this.joinRelativeCssSelectors([DIALOG_CLASS, DIALOG_BUTTONS_PANEL_CLASS]);
152
280
  }
153
281
  async title() {
154
- const el = await this.driver.findElement(By3.css(this.titleSelector));
282
+ const el = await this.driver.findElement(By5.css(this.titleSelector));
155
283
  return await el.getText();
156
284
  }
157
285
  async text() {
158
- const el = await this.driver.findElement(By3.css(this.textSelector));
286
+ const el = await this.driver.findElement(By5.css(this.textSelector));
159
287
  return await el.getText();
160
288
  }
161
289
  button(text) {
@@ -174,6 +302,7 @@ export {
174
302
  LoginPage,
175
303
  NumberEditor,
176
304
  PanelFilterField,
305
+ ReportForm,
177
306
  SubsystemsPanel,
178
307
  TextEditor,
179
308
  TreeView,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "d5-testing-library",
3
- "version": "1.5.0",
3
+ "version": "1.7.0-alpha.0",
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",
@@ -22,7 +22,9 @@
22
22
  "build": "tsup",
23
23
  "changelog": "node ./scripts/releaseChangelog.mjs changelog -p v1.0.1",
24
24
  "prepublishOnly": "yarn clean",
25
- "prepack": "yarn build"
25
+ "prepack": "yarn build",
26
+ "preminor": "npm version preminor --preid=alpha",
27
+ "prerelease": "npm version prerelease --preid=alpha"
26
28
  },
27
29
  "files": [
28
30
  "dist"
@@ -1,7 +0,0 @@
1
- import {
2
- FormEdit
3
- } from "./chunk-FP26UOTI.mjs";
4
- import "./chunk-VWNH6HVN.mjs";
5
- export {
6
- FormEdit as default
7
- };
@@ -1,7 +0,0 @@
1
- import {
2
- ListForm
3
- } from "./chunk-NWWYF43G.mjs";
4
- import "./chunk-VWNH6HVN.mjs";
5
- export {
6
- ListForm as default
7
- };
@@ -1,8 +0,0 @@
1
- import {
2
- TreeView
3
- } from "./chunk-44JIUIEW.mjs";
4
- import "./chunk-NWWYF43G.mjs";
5
- import "./chunk-VWNH6HVN.mjs";
6
- export {
7
- TreeView as default
8
- };