d5-testing-library 1.8.0-alpha.1 → 1.8.0-alpha.3
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/dist/FormEdit-2USHOJID.mjs +7 -0
- package/dist/ListForm-KXMIP4EA.mjs +7 -0
- package/dist/TreeView-5QQREFJ6.mjs +8 -0
- package/dist/{chunk-CKCSBNKD.mjs → chunk-2DQ5YCRB.mjs} +1 -1
- package/dist/{chunk-JITTN2NY.mjs → chunk-F57G2ZDW.mjs} +3 -3
- package/dist/{chunk-WUPIBFH7.mjs → chunk-MH6NCS6F.mjs} +276 -22
- package/dist/{chunk-Q67RHZDP.mjs → chunk-R25O5O4T.mjs} +3 -1
- package/dist/cjs/d5-testing-library.cjs +314 -40
- package/dist/d5-testing-library.d.ts +85 -2
- package/dist/d5-testing-library.legacy-esm.js +4 -4
- package/dist/d5-testing-library.mjs +4 -4
- package/package.json +1 -1
- package/dist/FormEdit-XOCYARDX.mjs +0 -7
- package/dist/ListForm-R7WQIGBI.mjs +0 -7
- package/dist/TreeView-STUAAR65.mjs +0 -8
|
@@ -1510,10 +1510,12 @@ var init_Row = __esm({
|
|
|
1510
1510
|
Row = class extends AbstractElementWithParent {
|
|
1511
1511
|
index;
|
|
1512
1512
|
getColumnBy;
|
|
1513
|
-
|
|
1513
|
+
fixedTableContentCssSelector;
|
|
1514
|
+
constructor(parentCssSelector, fixedTableContentCssSelector, index, driver, getColumnBy) {
|
|
1514
1515
|
super(parentCssSelector, getCssRowByIndexSelector(index), driver);
|
|
1515
1516
|
this.index = index;
|
|
1516
1517
|
this.getColumnBy = getColumnBy;
|
|
1518
|
+
this.fixedTableContentCssSelector = fixedTableContentCssSelector;
|
|
1517
1519
|
}
|
|
1518
1520
|
_getCell({ index, name, title }) {
|
|
1519
1521
|
return new Cell(
|
|
@@ -1563,12 +1565,11 @@ var init_Row = __esm({
|
|
|
1563
1565
|
return result;
|
|
1564
1566
|
}
|
|
1565
1567
|
async clickInlineButton(buttonClass) {
|
|
1566
|
-
const FIXED_TABLE_CSS_SELECTOR = ".dx-fixed-columns .dx-datagrid-content.dx-datagrid-content-fixed";
|
|
1567
1568
|
const buttonCssSelector = `.${DX_DATA_ROW_CLASS}[aria-rowindex="${transformInputIndex(
|
|
1568
1569
|
this.index
|
|
1569
1570
|
)}"] .${buttonClass}`;
|
|
1570
1571
|
const button = await fixElementStaleError(
|
|
1571
|
-
import_selenium_webdriver21.By.css(`${this.parentCssSelector} ${
|
|
1572
|
+
import_selenium_webdriver21.By.css(`${this.parentCssSelector} ${this.fixedTableContentCssSelector} ${buttonCssSelector}`),
|
|
1572
1573
|
this.driver
|
|
1573
1574
|
);
|
|
1574
1575
|
return click(button, this.driver);
|
|
@@ -1767,10 +1768,12 @@ var init_Table = __esm({
|
|
|
1767
1768
|
Table = class extends AbstractElementWithParent {
|
|
1768
1769
|
formName;
|
|
1769
1770
|
headerCssSelector;
|
|
1770
|
-
|
|
1771
|
+
fixedTableContentCssSelector;
|
|
1772
|
+
constructor(parentCssSelector, headerCssSelector, fixedTableContentCssSelector, formName, driver) {
|
|
1771
1773
|
super(parentCssSelector, `#${createTableId(formName)}`, driver);
|
|
1772
1774
|
this.formName = formName;
|
|
1773
1775
|
this.headerCssSelector = headerCssSelector;
|
|
1776
|
+
this.fixedTableContentCssSelector = fixedTableContentCssSelector;
|
|
1774
1777
|
}
|
|
1775
1778
|
getColumnBy = (args) => {
|
|
1776
1779
|
if (args.title) {
|
|
@@ -1779,7 +1782,7 @@ var init_Table = __esm({
|
|
|
1779
1782
|
return this.getColumnByName(args.name);
|
|
1780
1783
|
};
|
|
1781
1784
|
getRowByIndex(index) {
|
|
1782
|
-
return new Row(this.getFullCssSelector(), index, this.driver, this.getColumnBy);
|
|
1785
|
+
return new Row(this.getFullCssSelector(), this.fixedTableContentCssSelector, index, this.driver, this.getColumnBy);
|
|
1783
1786
|
}
|
|
1784
1787
|
getColumnByIndex(index) {
|
|
1785
1788
|
return new Column({
|
|
@@ -1811,7 +1814,13 @@ var init_Table = __esm({
|
|
|
1811
1814
|
const rows = await this.driver.findElements(import_selenium_webdriver23.By.css(`${this.getFullCssSelector()} .dx-row.dx-data-row`));
|
|
1812
1815
|
const result = [];
|
|
1813
1816
|
rows.forEach((_, index) => {
|
|
1814
|
-
const newRow = new Row(
|
|
1817
|
+
const newRow = new Row(
|
|
1818
|
+
this.getFullCssSelector(),
|
|
1819
|
+
this.fixedTableContentCssSelector,
|
|
1820
|
+
index,
|
|
1821
|
+
this.driver,
|
|
1822
|
+
this.getColumnBy
|
|
1823
|
+
);
|
|
1815
1824
|
result.push(newRow);
|
|
1816
1825
|
});
|
|
1817
1826
|
return result;
|
|
@@ -2042,6 +2051,110 @@ var init_FormToolbar = __esm({
|
|
|
2042
2051
|
}
|
|
2043
2052
|
});
|
|
2044
2053
|
|
|
2054
|
+
// src/pageObjects/elements/Filters/FilterOperation.ts
|
|
2055
|
+
var import_selenium_webdriver25, FILTER_OPERATIONS, BUTTON_OPERATION_WIDGET, OPERATIONS_WIDGET_POPUP, getWidgetInPopupSelector, FilterOperation;
|
|
2056
|
+
var init_FilterOperation = __esm({
|
|
2057
|
+
"src/pageObjects/elements/Filters/FilterOperation.ts"() {
|
|
2058
|
+
"use strict";
|
|
2059
|
+
import_selenium_webdriver25 = require("selenium-webdriver");
|
|
2060
|
+
init_fixElementStaleError();
|
|
2061
|
+
init_AbstractElementWithParent();
|
|
2062
|
+
init_locators();
|
|
2063
|
+
init_actions();
|
|
2064
|
+
init_wait();
|
|
2065
|
+
init_waitElementIsClickable();
|
|
2066
|
+
init_waitElementIsVisible();
|
|
2067
|
+
FILTER_OPERATIONS = [
|
|
2068
|
+
"=",
|
|
2069
|
+
"<>",
|
|
2070
|
+
"<",
|
|
2071
|
+
">",
|
|
2072
|
+
"<=",
|
|
2073
|
+
">=",
|
|
2074
|
+
"contains",
|
|
2075
|
+
"between",
|
|
2076
|
+
"isanyof",
|
|
2077
|
+
"isnotanyof",
|
|
2078
|
+
"isblank",
|
|
2079
|
+
"isnotblank",
|
|
2080
|
+
"startwith",
|
|
2081
|
+
"bywords"
|
|
2082
|
+
];
|
|
2083
|
+
BUTTON_OPERATION_WIDGET = "operation-widget";
|
|
2084
|
+
OPERATIONS_WIDGET_POPUP = "operation-type-widget-popup";
|
|
2085
|
+
getWidgetInPopupSelector = (operationName) => `.dx-list-item [data-operation="${operationName}"]`;
|
|
2086
|
+
FilterOperation = class extends AbstractElementWithParent {
|
|
2087
|
+
_testId;
|
|
2088
|
+
constructor({ parentCssSelector, filterTestID, driver }) {
|
|
2089
|
+
super(parentCssSelector, `${byTestIdCssSelector(`${BUTTON_OPERATION_WIDGET}-${filterTestID}`)}`, driver);
|
|
2090
|
+
this._testId = filterTestID;
|
|
2091
|
+
}
|
|
2092
|
+
async initOperationWidget() {
|
|
2093
|
+
const widgetButtonEl = await this.getElement();
|
|
2094
|
+
await waitElementIsClickable({
|
|
2095
|
+
element: widgetButtonEl,
|
|
2096
|
+
errorMessage: "Widget operation is not clickable",
|
|
2097
|
+
driver: this.driver
|
|
2098
|
+
});
|
|
2099
|
+
const clickableElement = await widgetButtonEl.findElement(import_selenium_webdriver25.By.className("dx-icon"));
|
|
2100
|
+
await click(clickableElement, this.driver);
|
|
2101
|
+
try {
|
|
2102
|
+
const widgetPopupEl = await this.driver.findElement(import_selenium_webdriver25.By.css(`${byTestIdCssSelector(`${OPERATIONS_WIDGET_POPUP}-${this._testId}`)}`));
|
|
2103
|
+
await waitElementIsVisible({
|
|
2104
|
+
element: widgetPopupEl,
|
|
2105
|
+
errorMessage: `Operation widget popup is not visible`,
|
|
2106
|
+
driver: this.driver
|
|
2107
|
+
});
|
|
2108
|
+
} catch (_) {
|
|
2109
|
+
throw `Operation widget popup is not visible`;
|
|
2110
|
+
}
|
|
2111
|
+
}
|
|
2112
|
+
async setOperation(operationName) {
|
|
2113
|
+
if (!FILTER_OPERATIONS.includes(operationName)) {
|
|
2114
|
+
throw new Error(`Operation with name "${operationName}" is not correct.`);
|
|
2115
|
+
}
|
|
2116
|
+
await this.initOperationWidget();
|
|
2117
|
+
const operationEl = await fixElementStaleError(import_selenium_webdriver25.By.css(`${byTestIdCssSelector(`${OPERATIONS_WIDGET_POPUP}-${this._testId}`)} ${getWidgetInPopupSelector(operationName)}`), this.driver);
|
|
2118
|
+
await click(operationEl, this.driver);
|
|
2119
|
+
await wait(
|
|
2120
|
+
async () => {
|
|
2121
|
+
const currOperationName = await this.getAttribute("data-operation");
|
|
2122
|
+
if (operationName === "isblank")
|
|
2123
|
+
return true;
|
|
2124
|
+
return currOperationName === operationName;
|
|
2125
|
+
},
|
|
2126
|
+
this.driver,
|
|
2127
|
+
"Operation is not changed"
|
|
2128
|
+
);
|
|
2129
|
+
}
|
|
2130
|
+
async getOperation() {
|
|
2131
|
+
const result = await this.getAttribute("data-operation");
|
|
2132
|
+
if (!result)
|
|
2133
|
+
throw new Error("Operation not found");
|
|
2134
|
+
return result;
|
|
2135
|
+
}
|
|
2136
|
+
async setIsBlank(value) {
|
|
2137
|
+
const currValue = await this.getIsBlank();
|
|
2138
|
+
if (currValue !== value) {
|
|
2139
|
+
await this.setOperation("isblank");
|
|
2140
|
+
await wait(
|
|
2141
|
+
async () => {
|
|
2142
|
+
const currIsBlank = await this.getIsBlank();
|
|
2143
|
+
return currIsBlank === value;
|
|
2144
|
+
},
|
|
2145
|
+
this.driver,
|
|
2146
|
+
"Operation is not changed"
|
|
2147
|
+
);
|
|
2148
|
+
}
|
|
2149
|
+
}
|
|
2150
|
+
async getIsBlank() {
|
|
2151
|
+
const result = await this.getAttribute("data-hasblank");
|
|
2152
|
+
return result === "true";
|
|
2153
|
+
}
|
|
2154
|
+
};
|
|
2155
|
+
}
|
|
2156
|
+
});
|
|
2157
|
+
|
|
2045
2158
|
// src/pageObjects/elements/Filters/FormFilterField.ts
|
|
2046
2159
|
var FormFilterField;
|
|
2047
2160
|
var init_FormFilterField = __esm({
|
|
@@ -2050,9 +2163,14 @@ var init_FormFilterField = __esm({
|
|
|
2050
2163
|
init_locators();
|
|
2051
2164
|
init_createDataTestId();
|
|
2052
2165
|
init_AbstractEditor2();
|
|
2166
|
+
init_FilterOperation();
|
|
2053
2167
|
FormFilterField = class extends AbstractEditor {
|
|
2168
|
+
formName;
|
|
2169
|
+
name;
|
|
2054
2170
|
constructor(parentCssSelector, formName, name, driver) {
|
|
2055
2171
|
super(parentCssSelector, byTestIdCssSelector(createLayoutFilterTestId(formName, name)), driver);
|
|
2172
|
+
this.formName = formName;
|
|
2173
|
+
this.name = name;
|
|
2056
2174
|
}
|
|
2057
2175
|
/**
|
|
2058
2176
|
* Возвращает значение в поле
|
|
@@ -2088,6 +2206,51 @@ var init_FormFilterField = __esm({
|
|
|
2088
2206
|
async remove(itemText) {
|
|
2089
2207
|
return super.remove(itemText);
|
|
2090
2208
|
}
|
|
2209
|
+
/**
|
|
2210
|
+
* Инициализация операции фильтра
|
|
2211
|
+
*/
|
|
2212
|
+
async initOperation() {
|
|
2213
|
+
return new FilterOperation({
|
|
2214
|
+
parentCssSelector: this.parentCssSelector,
|
|
2215
|
+
filterTestID: createLayoutFilterTestId(this.formName, this.name)
|
|
2216
|
+
});
|
|
2217
|
+
}
|
|
2218
|
+
/**
|
|
2219
|
+
* Устанавливает операцию для фильтра
|
|
2220
|
+
* @example
|
|
2221
|
+
* await form.formFilter('TagBox').setOperation("=");
|
|
2222
|
+
*/
|
|
2223
|
+
async setOperation(operationName) {
|
|
2224
|
+
const filterOperation = await this.initOperation();
|
|
2225
|
+
await filterOperation.setOperation(operationName);
|
|
2226
|
+
}
|
|
2227
|
+
/**
|
|
2228
|
+
* Возвращает операцию фильтра
|
|
2229
|
+
* @example
|
|
2230
|
+
* expect(await form.formFilter('NumberFld').getOperation()).toBe("=");
|
|
2231
|
+
*/
|
|
2232
|
+
async getOperation() {
|
|
2233
|
+
const filterOperation = await this.initOperation();
|
|
2234
|
+
return await filterOperation.getOperation();
|
|
2235
|
+
}
|
|
2236
|
+
/**
|
|
2237
|
+
* Устанавливает операцию 'isblank' для фильтра
|
|
2238
|
+
* @example
|
|
2239
|
+
* await form.formFilter('TagBox').setIsBlank(true);
|
|
2240
|
+
*/
|
|
2241
|
+
async setIsBlank(value) {
|
|
2242
|
+
const filterOperation = await this.initOperation();
|
|
2243
|
+
await filterOperation.setIsBlank(value);
|
|
2244
|
+
}
|
|
2245
|
+
/**
|
|
2246
|
+
* Возвращает true|false, если операция 'isblank' установлена для фильтра
|
|
2247
|
+
* @example
|
|
2248
|
+
* expect(await form.formFilter('NumberFld').getIsBlank()).toBe(false);
|
|
2249
|
+
*/
|
|
2250
|
+
async getIsBlank() {
|
|
2251
|
+
const filterOperation = await this.initOperation();
|
|
2252
|
+
return await filterOperation.getIsBlank();
|
|
2253
|
+
}
|
|
2091
2254
|
};
|
|
2092
2255
|
}
|
|
2093
2256
|
});
|
|
@@ -2100,9 +2263,14 @@ var init_PanelFilterField = __esm({
|
|
|
2100
2263
|
init_locators();
|
|
2101
2264
|
init_createDataTestId();
|
|
2102
2265
|
init_AbstractEditor2();
|
|
2266
|
+
init_FilterOperation();
|
|
2103
2267
|
PanelFilterField = class extends AbstractEditor {
|
|
2268
|
+
formName;
|
|
2269
|
+
name;
|
|
2104
2270
|
constructor(parentCssSelector, formName, name, driver) {
|
|
2105
2271
|
super(parentCssSelector, byTestIdCssSelector(createDocFilterTestId(formName, name)), driver);
|
|
2272
|
+
this.formName = formName;
|
|
2273
|
+
this.name = name;
|
|
2106
2274
|
}
|
|
2107
2275
|
/**
|
|
2108
2276
|
* Возвращает значение в поле
|
|
@@ -2138,16 +2306,61 @@ var init_PanelFilterField = __esm({
|
|
|
2138
2306
|
async remove(itemText) {
|
|
2139
2307
|
return super.remove(itemText);
|
|
2140
2308
|
}
|
|
2309
|
+
/**
|
|
2310
|
+
* Инициализация операции фильтра
|
|
2311
|
+
*/
|
|
2312
|
+
async initOperation() {
|
|
2313
|
+
return new FilterOperation({
|
|
2314
|
+
parentCssSelector: this.parentCssSelector,
|
|
2315
|
+
filterTestID: createDocFilterTestId(this.formName, this.name)
|
|
2316
|
+
});
|
|
2317
|
+
}
|
|
2318
|
+
/**
|
|
2319
|
+
* Устанавливает операцию для фильтра
|
|
2320
|
+
* @example
|
|
2321
|
+
* await form.filterPanel.filterField('TagBox').setOperation("=");
|
|
2322
|
+
*/
|
|
2323
|
+
async setOperation(operationName) {
|
|
2324
|
+
const filterOperation = await this.initOperation();
|
|
2325
|
+
await filterOperation.setOperation(operationName);
|
|
2326
|
+
}
|
|
2327
|
+
/**
|
|
2328
|
+
* Возвращает операцию фильтра
|
|
2329
|
+
* @example
|
|
2330
|
+
* expect(await form.filterPanel.filterField('NumberFld').getOperation()).toBe("=");
|
|
2331
|
+
*/
|
|
2332
|
+
async getOperation() {
|
|
2333
|
+
const filterOperation = await this.initOperation();
|
|
2334
|
+
return await filterOperation.getOperation();
|
|
2335
|
+
}
|
|
2336
|
+
/**
|
|
2337
|
+
* Устанавливает операцию 'isblank' для фильтра
|
|
2338
|
+
* @example
|
|
2339
|
+
* await form.filterPanel.filterField('TagBox').setIsBlank(true);
|
|
2340
|
+
*/
|
|
2341
|
+
async setIsBlank(value) {
|
|
2342
|
+
const filterOperation = await this.initOperation();
|
|
2343
|
+
await filterOperation.setIsBlank(value);
|
|
2344
|
+
}
|
|
2345
|
+
/**
|
|
2346
|
+
* Возвращает true|false, если операция 'isblank' установлена для фильтра
|
|
2347
|
+
* @example
|
|
2348
|
+
* expect(await form.filterPanel.filterField('NumberFld').getIsBlank()).toBe(false);
|
|
2349
|
+
*/
|
|
2350
|
+
async getIsBlank() {
|
|
2351
|
+
const filterOperation = await this.initOperation();
|
|
2352
|
+
return await filterOperation.getIsBlank();
|
|
2353
|
+
}
|
|
2141
2354
|
};
|
|
2142
2355
|
}
|
|
2143
2356
|
});
|
|
2144
2357
|
|
|
2145
2358
|
// src/pageObjects/elements/Filters/FilterPanel.ts
|
|
2146
|
-
var
|
|
2359
|
+
var import_selenium_webdriver26, drawerSelector, FILTER_PANEL_SELECTOR, CLOSE_SELECTOR, FilterPanel;
|
|
2147
2360
|
var init_FilterPanel = __esm({
|
|
2148
2361
|
"src/pageObjects/elements/Filters/FilterPanel.ts"() {
|
|
2149
2362
|
"use strict";
|
|
2150
|
-
|
|
2363
|
+
import_selenium_webdriver26 = require("selenium-webdriver");
|
|
2151
2364
|
init_AbstractElement();
|
|
2152
2365
|
init_PanelFilterField();
|
|
2153
2366
|
init_actions();
|
|
@@ -2162,7 +2375,7 @@ var init_FilterPanel = __esm({
|
|
|
2162
2375
|
async filterPanelButtons() {
|
|
2163
2376
|
const selector = `${this.elementCssSelector} ${FILTER_PANEL_SELECTOR} .filter-panel__buttons-panel .dx-button-text`;
|
|
2164
2377
|
const el = await this.getElement();
|
|
2165
|
-
return el.findElements(
|
|
2378
|
+
return el.findElements(import_selenium_webdriver26.By.css(selector));
|
|
2166
2379
|
}
|
|
2167
2380
|
constructor(formName, driver) {
|
|
2168
2381
|
super(driver, drawerSelector(formName));
|
|
@@ -2195,7 +2408,7 @@ var init_FilterPanel = __esm({
|
|
|
2195
2408
|
await this.driver.sleep(300);
|
|
2196
2409
|
}
|
|
2197
2410
|
async close() {
|
|
2198
|
-
const btn = await this.driver.findElement(
|
|
2411
|
+
const btn = await this.driver.findElement(import_selenium_webdriver26.By.css(`${this.elementCssSelector} ${CLOSE_SELECTOR}`));
|
|
2199
2412
|
await click(btn, this.driver);
|
|
2200
2413
|
}
|
|
2201
2414
|
};
|
|
@@ -2231,15 +2444,18 @@ var init_HeaderFilterField = __esm({
|
|
|
2231
2444
|
});
|
|
2232
2445
|
|
|
2233
2446
|
// src/pageObjects/elements/Filters/ColumnFilter.ts
|
|
2234
|
-
var
|
|
2447
|
+
var import_selenium_webdriver27, APPLY_SELECTOR, CANCEL_SELECTOR, HEADER_FILTER_ICON, HEADER_FILTER_CONTAINER, HEADER_FILTER_BUTTONS, ColumnFilter;
|
|
2235
2448
|
var init_ColumnFilter = __esm({
|
|
2236
2449
|
"src/pageObjects/elements/Filters/ColumnFilter.ts"() {
|
|
2237
2450
|
"use strict";
|
|
2238
2451
|
init_actions();
|
|
2239
|
-
|
|
2452
|
+
import_selenium_webdriver27 = require("selenium-webdriver");
|
|
2240
2453
|
init_HeaderFilterField();
|
|
2241
2454
|
init_waitElementIsVisible();
|
|
2242
2455
|
init_AbstractElement();
|
|
2456
|
+
init_FilterOperation();
|
|
2457
|
+
init_createDataTestId();
|
|
2458
|
+
init_wait();
|
|
2243
2459
|
APPLY_SELECTOR = ".apply-button";
|
|
2244
2460
|
CANCEL_SELECTOR = ".cancel-button";
|
|
2245
2461
|
HEADER_FILTER_ICON = ".dx-column-indicators .dx-header-filter";
|
|
@@ -2258,11 +2474,11 @@ var init_ColumnFilter = __esm({
|
|
|
2258
2474
|
}
|
|
2259
2475
|
async getApplyButton() {
|
|
2260
2476
|
const selector = `${HEADER_FILTER_CONTAINER} ${HEADER_FILTER_BUTTONS} ${APPLY_SELECTOR}`;
|
|
2261
|
-
return this.driver.findElement(
|
|
2477
|
+
return this.driver.findElement(import_selenium_webdriver27.By.css(selector));
|
|
2262
2478
|
}
|
|
2263
2479
|
async getCancelButton() {
|
|
2264
2480
|
const selector = `${HEADER_FILTER_CONTAINER} ${HEADER_FILTER_BUTTONS} ${CANCEL_SELECTOR}`;
|
|
2265
|
-
return this.driver.findElement(
|
|
2481
|
+
return this.driver.findElement(import_selenium_webdriver27.By.css(selector));
|
|
2266
2482
|
}
|
|
2267
2483
|
async apply() {
|
|
2268
2484
|
const btn = await this.getApplyButton();
|
|
@@ -2276,17 +2492,34 @@ var init_ColumnFilter = __esm({
|
|
|
2276
2492
|
const columnEl = await this._column.getElement();
|
|
2277
2493
|
const actions = this.driver.actions({ async: true });
|
|
2278
2494
|
await actions.move({ origin: columnEl }).perform();
|
|
2279
|
-
const elements = await columnEl.findElements(
|
|
2280
|
-
|
|
2281
|
-
await
|
|
2282
|
-
|
|
2283
|
-
|
|
2284
|
-
|
|
2285
|
-
|
|
2495
|
+
const elements = await columnEl.findElements(import_selenium_webdriver27.By.css(HEADER_FILTER_ICON));
|
|
2496
|
+
let headerFilterIcon = null;
|
|
2497
|
+
await wait(
|
|
2498
|
+
async () => {
|
|
2499
|
+
let result = false;
|
|
2500
|
+
for (let element of elements) {
|
|
2501
|
+
if (await element.isDisplayed()) {
|
|
2502
|
+
headerFilterIcon = element;
|
|
2503
|
+
result = true;
|
|
2504
|
+
break;
|
|
2505
|
+
}
|
|
2506
|
+
}
|
|
2507
|
+
return result;
|
|
2508
|
+
},
|
|
2509
|
+
this.driver,
|
|
2510
|
+
`HeaderFilter "${this._name}" is not visible`
|
|
2511
|
+
);
|
|
2286
2512
|
if (!headerFilterIcon)
|
|
2287
2513
|
throw new Error(`HeaderFilter "${this._name}" is not visible`);
|
|
2288
2514
|
await headerFilterIcon.click();
|
|
2289
|
-
|
|
2515
|
+
const filter = new HeaderFilterField("", this._formName, this._name, this.driver);
|
|
2516
|
+
const filterEl = await filter.getElement();
|
|
2517
|
+
await waitElementIsVisible({
|
|
2518
|
+
element: filterEl,
|
|
2519
|
+
driver: this.driver,
|
|
2520
|
+
errorMessage: `Header filter is not visible`
|
|
2521
|
+
});
|
|
2522
|
+
return filter;
|
|
2290
2523
|
}
|
|
2291
2524
|
/**
|
|
2292
2525
|
* Возвращает значение в поле
|
|
@@ -2331,6 +2564,36 @@ var init_ColumnFilter = __esm({
|
|
|
2331
2564
|
await filter.remove(itemText);
|
|
2332
2565
|
return this.apply();
|
|
2333
2566
|
}
|
|
2567
|
+
// ToDo: Треба доробити після того, як буде реалізована логіка з editor buttons
|
|
2568
|
+
async initOperation() {
|
|
2569
|
+
await this.initFilter();
|
|
2570
|
+
return new FilterOperation({
|
|
2571
|
+
parentCssSelector: HEADER_FILTER_CONTAINER,
|
|
2572
|
+
filterTestID: createHeaderFilterTestId(this._formName, this._name)
|
|
2573
|
+
});
|
|
2574
|
+
}
|
|
2575
|
+
// ToDo: Треба доробити після того, як буде реалізована логіка з editor buttons
|
|
2576
|
+
async setOperation(operationName) {
|
|
2577
|
+
const filterOperation = await this.initOperation();
|
|
2578
|
+
await filterOperation.setOperation(operationName);
|
|
2579
|
+
await this.apply();
|
|
2580
|
+
}
|
|
2581
|
+
// ToDo: Треба доробити після того, як буде реалізована логіка з editor buttons
|
|
2582
|
+
async getOperation() {
|
|
2583
|
+
const filterOperation = await this.initOperation();
|
|
2584
|
+
return await filterOperation.getOperation();
|
|
2585
|
+
}
|
|
2586
|
+
// ToDo: Треба доробити після того, як буде реалізована логіка з editor buttons
|
|
2587
|
+
async setIsBlank(value) {
|
|
2588
|
+
const filterOperation = await this.initOperation();
|
|
2589
|
+
await filterOperation.setIsBlank(value);
|
|
2590
|
+
await this.apply();
|
|
2591
|
+
}
|
|
2592
|
+
// ToDo: Треба доробити після того, як буде реалізована логіка з editor buttons
|
|
2593
|
+
async getIsBlank() {
|
|
2594
|
+
const filterOperation = await this.initOperation();
|
|
2595
|
+
return await filterOperation.getIsBlank();
|
|
2596
|
+
}
|
|
2334
2597
|
};
|
|
2335
2598
|
}
|
|
2336
2599
|
});
|
|
@@ -2340,7 +2603,7 @@ var ListForm_exports = {};
|
|
|
2340
2603
|
__export(ListForm_exports, {
|
|
2341
2604
|
default: () => ListForm
|
|
2342
2605
|
});
|
|
2343
|
-
var DATAGRID_HEADER_CSS_SELECTOR, ListForm;
|
|
2606
|
+
var DATAGRID_HEADER_CSS_SELECTOR, FIXED_DATAGRID_CONTENT_CSS_SELECTOR, ListForm;
|
|
2344
2607
|
var init_ListForm = __esm({
|
|
2345
2608
|
"src/pageObjects/elements/Forms/ListForm.ts"() {
|
|
2346
2609
|
"use strict";
|
|
@@ -2351,12 +2614,15 @@ var init_ListForm = __esm({
|
|
|
2351
2614
|
init_FilterPanel();
|
|
2352
2615
|
init_ColumnFilter();
|
|
2353
2616
|
DATAGRID_HEADER_CSS_SELECTOR = ".dx-datagrid-headers .dx-datagrid-content:not(.dx-datagrid-content-fixed)";
|
|
2617
|
+
FIXED_DATAGRID_CONTENT_CSS_SELECTOR = ".dx-fixed-columns .dx-datagrid-content.dx-datagrid-content-fixed";
|
|
2354
2618
|
ListForm = class extends Form {
|
|
2355
2619
|
headerCssSelector;
|
|
2620
|
+
fixedTableContentCssSelector;
|
|
2356
2621
|
constructor(driver) {
|
|
2357
2622
|
super(driver);
|
|
2358
2623
|
this.popupContainerCssSelector = `.popup .form-inline-${this.formName}`;
|
|
2359
2624
|
this.headerCssSelector = DATAGRID_HEADER_CSS_SELECTOR;
|
|
2625
|
+
this.fixedTableContentCssSelector = FIXED_DATAGRID_CONTENT_CSS_SELECTOR;
|
|
2360
2626
|
}
|
|
2361
2627
|
/**
|
|
2362
2628
|
* Находит таблицу
|
|
@@ -2366,7 +2632,13 @@ var init_ListForm = __esm({
|
|
|
2366
2632
|
* expect(listForm.table());
|
|
2367
2633
|
*/
|
|
2368
2634
|
table() {
|
|
2369
|
-
return new Table(
|
|
2635
|
+
return new Table(
|
|
2636
|
+
this.containerCssSelector,
|
|
2637
|
+
this.headerCssSelector,
|
|
2638
|
+
this.fixedTableContentCssSelector,
|
|
2639
|
+
this.formName,
|
|
2640
|
+
this.driver
|
|
2641
|
+
);
|
|
2370
2642
|
}
|
|
2371
2643
|
/**
|
|
2372
2644
|
* Находит таблицу
|
|
@@ -2413,17 +2685,19 @@ var TreeView_exports = {};
|
|
|
2413
2685
|
__export(TreeView_exports, {
|
|
2414
2686
|
default: () => TreeView
|
|
2415
2687
|
});
|
|
2416
|
-
var TREELIST_HEADER_CSS_SELECTOR, TreeView;
|
|
2688
|
+
var TREELIST_HEADER_CSS_SELECTOR, FIXED_TREELIST_CONTENT_CSS_SELECTOR, TreeView;
|
|
2417
2689
|
var init_TreeView = __esm({
|
|
2418
2690
|
"src/pageObjects/elements/Forms/TreeView.ts"() {
|
|
2419
2691
|
"use strict";
|
|
2420
2692
|
init_ListForm();
|
|
2421
2693
|
TREELIST_HEADER_CSS_SELECTOR = ".dx-treelist-headers .dx-treelist-content:not(.dx-datagrid-content-fixed)";
|
|
2694
|
+
FIXED_TREELIST_CONTENT_CSS_SELECTOR = ".dx-fixed-columns .dx-treelist-content.dx-treelist-content-fixed";
|
|
2422
2695
|
TreeView = class extends ListForm {
|
|
2423
2696
|
constructor(driver) {
|
|
2424
2697
|
super(driver);
|
|
2425
2698
|
this.popupContainerCssSelector = `.popup .wrapper-tree-view-${this.formName}`;
|
|
2426
2699
|
this.headerCssSelector = TREELIST_HEADER_CSS_SELECTOR;
|
|
2700
|
+
this.fixedTableContentCssSelector = FIXED_TREELIST_CONTENT_CSS_SELECTOR;
|
|
2427
2701
|
}
|
|
2428
2702
|
};
|
|
2429
2703
|
}
|
|
@@ -2463,12 +2737,12 @@ var init_createSubFormInstance = __esm({
|
|
|
2463
2737
|
});
|
|
2464
2738
|
|
|
2465
2739
|
// src/pageObjects/elements/Forms/Form.ts
|
|
2466
|
-
var
|
|
2740
|
+
var import_selenium_webdriver28, formTestId, Form;
|
|
2467
2741
|
var init_Form = __esm({
|
|
2468
2742
|
"src/pageObjects/elements/Forms/Form.ts"() {
|
|
2469
2743
|
"use strict";
|
|
2470
2744
|
init_locators();
|
|
2471
|
-
|
|
2745
|
+
import_selenium_webdriver28 = require("selenium-webdriver");
|
|
2472
2746
|
init_AbstractForm();
|
|
2473
2747
|
init_waitElementIsVisible();
|
|
2474
2748
|
init_createSubFormInstance();
|
|
@@ -2493,10 +2767,10 @@ var init_Form = __esm({
|
|
|
2493
2767
|
*/
|
|
2494
2768
|
async getTitleText() {
|
|
2495
2769
|
if (await this.isModal()) {
|
|
2496
|
-
const titleEl2 = await this.driver.findElement(
|
|
2770
|
+
const titleEl2 = await this.driver.findElement(import_selenium_webdriver28.By.css(`${this.popupContainerCssSelector} .popup-title`));
|
|
2497
2771
|
return titleEl2.getText();
|
|
2498
2772
|
}
|
|
2499
|
-
let titleEl = await this.driver.findElement(
|
|
2773
|
+
let titleEl = await this.driver.findElement(import_selenium_webdriver28.By.className("main-toolbar-form-title"));
|
|
2500
2774
|
return titleEl.getText();
|
|
2501
2775
|
}
|
|
2502
2776
|
setSubFormMode() {
|
|
@@ -2514,7 +2788,7 @@ var init_Form = __esm({
|
|
|
2514
2788
|
*/
|
|
2515
2789
|
async subForm(name) {
|
|
2516
2790
|
const cssSelector = subformCssSelector(this.containerCssSelector, subFormTestId(name));
|
|
2517
|
-
const byCssSelector =
|
|
2791
|
+
const byCssSelector = import_selenium_webdriver28.By.css(cssSelector);
|
|
2518
2792
|
const subFormEl = await this.driver.findElement(byCssSelector);
|
|
2519
2793
|
await waitElementIsVisible({
|
|
2520
2794
|
element: subFormEl,
|
|
@@ -2544,18 +2818,18 @@ var FormEdit_exports = {};
|
|
|
2544
2818
|
__export(FormEdit_exports, {
|
|
2545
2819
|
default: () => FormEdit
|
|
2546
2820
|
});
|
|
2547
|
-
var
|
|
2821
|
+
var import_selenium_webdriver29, FormEdit;
|
|
2548
2822
|
var init_FormEdit = __esm({
|
|
2549
2823
|
"src/pageObjects/elements/Forms/FormEdit.ts"() {
|
|
2550
2824
|
"use strict";
|
|
2551
2825
|
init_Form();
|
|
2552
|
-
|
|
2826
|
+
import_selenium_webdriver29 = require("selenium-webdriver");
|
|
2553
2827
|
init_FormField();
|
|
2554
2828
|
init_actions();
|
|
2555
2829
|
init_wait();
|
|
2556
2830
|
FormEdit = class extends Form {
|
|
2557
|
-
saveButtonBy =
|
|
2558
|
-
closeButtonBy =
|
|
2831
|
+
saveButtonBy = import_selenium_webdriver29.By.id("button-save");
|
|
2832
|
+
closeButtonBy = import_selenium_webdriver29.By.id("button-cancel");
|
|
2559
2833
|
constructor(driver) {
|
|
2560
2834
|
super(driver);
|
|
2561
2835
|
this.popupContainerCssSelector = `.popup .form-edit-${this.formName}`;
|
|
@@ -2871,13 +3145,13 @@ init_ListForm();
|
|
|
2871
3145
|
init_TreeView();
|
|
2872
3146
|
|
|
2873
3147
|
// src/pageObjects/elements/Forms/ReportForm.ts
|
|
2874
|
-
var
|
|
3148
|
+
var import_selenium_webdriver30 = require("selenium-webdriver");
|
|
2875
3149
|
init_FormEdit();
|
|
2876
3150
|
var ReportForm = class extends FormEdit {
|
|
2877
3151
|
constructor(driver) {
|
|
2878
3152
|
super(driver);
|
|
2879
3153
|
this.popupContainerCssSelector = `.popup .form-report-${this.formName}`;
|
|
2880
|
-
this.saveButtonBy =
|
|
3154
|
+
this.saveButtonBy = import_selenium_webdriver30.By.id("button-apply");
|
|
2881
3155
|
}
|
|
2882
3156
|
/**
|
|
2883
3157
|
* Знаходить поле/фільтр у формі репорту за ім'ям
|
|
@@ -2900,7 +3174,7 @@ init_FilterPanel();
|
|
|
2900
3174
|
|
|
2901
3175
|
// src/pageObjects/elements/Dialog.ts
|
|
2902
3176
|
init_AbstractElement();
|
|
2903
|
-
var
|
|
3177
|
+
var import_selenium_webdriver31 = require("selenium-webdriver");
|
|
2904
3178
|
init_AbstractButton();
|
|
2905
3179
|
var DIALOG_CLASS = ".d5-dialog";
|
|
2906
3180
|
var DIALOG_TITLE_CLASS = ".dialog__title";
|
|
@@ -2915,7 +3189,7 @@ var DialogButton = class extends AbstractButton {
|
|
|
2915
3189
|
}
|
|
2916
3190
|
async getElement() {
|
|
2917
3191
|
const panel = await super.getElement();
|
|
2918
|
-
return panel.findElement(
|
|
3192
|
+
return panel.findElement(import_selenium_webdriver31.By.xpath(buttonByTextXpath2(this.text)));
|
|
2919
3193
|
}
|
|
2920
3194
|
buttonNotDisplayedError() {
|
|
2921
3195
|
return `Dialog button ${this.text} cannot be clicked. It is not displayed or it is disabled`;
|
|
@@ -2935,11 +3209,11 @@ var Dialog = class extends AbstractElement {
|
|
|
2935
3209
|
return this.joinRelativeCssSelectors([DIALOG_CLASS, DIALOG_BUTTONS_PANEL_CLASS]);
|
|
2936
3210
|
}
|
|
2937
3211
|
async title() {
|
|
2938
|
-
const el = await this.driver.findElement(
|
|
3212
|
+
const el = await this.driver.findElement(import_selenium_webdriver31.By.css(this.titleSelector));
|
|
2939
3213
|
return await el.getText();
|
|
2940
3214
|
}
|
|
2941
3215
|
async text() {
|
|
2942
|
-
const el = await this.driver.findElement(
|
|
3216
|
+
const el = await this.driver.findElement(import_selenium_webdriver31.By.css(this.textSelector));
|
|
2943
3217
|
return await el.getText();
|
|
2944
3218
|
}
|
|
2945
3219
|
button(text) {
|