@uxf/e2e-playwright 11.119.0 → 11.120.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.
- package/components.d.ts +1 -0
- package/components.js +2 -0
- package/data-grid/table.d.ts +1 -1
- package/data-grid/table.e2e.js +1 -1
- package/data-grid/table.js +2 -2
- package/package.json +3 -3
- package/ui/button.e2e.js +6 -0
- package/ui/button.js +2 -1
- package/ui/combobox.e2e.js +6 -0
- package/ui/combobox.js +5 -1
- package/ui/flash-messages.e2e.js +7 -0
- package/ui/flash-messages.js +2 -1
- package/ui/h1.e2e.js +7 -0
- package/ui/h1.js +2 -1
- package/ui/icon-button.d.ts +13 -0
- package/ui/icon-button.e2e.d.ts +1 -0
- package/ui/icon-button.e2e.js +18 -0
- package/ui/icon-button.js +23 -0
- package/ui/multi-select.e2e.js +6 -0
- package/ui/multi-select.js +5 -1
- package/ui/radio-group.e2e.js +7 -1
- package/ui/radio-group.js +2 -1
- package/ui/select.e2e.js +6 -0
- package/ui/select.js +5 -1
- package/utils/exact-text.d.ts +1 -0
- package/utils/exact-text.js +8 -0
package/components.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Page } from "@playwright/test";
|
|
2
2
|
export declare function createUi(page: Page): {
|
|
3
3
|
button: (finder: import("./ui/button").ButtonFinder) => import("./ui/button").ButtonModel;
|
|
4
|
+
iconButton: (finder: import("./ui/icon-button").IconButtonFinder) => import("./ui/icon-button").IconButtonModel;
|
|
4
5
|
checkboxInput: (finder: import("./ui/checkbox-input").CheckboxInputFinder) => import("./ui/checkbox-input").CheckboxInputModel;
|
|
5
6
|
combobox: (finder: import("./ui/combobox").ComboboxFinder) => import("./ui/combobox").ComboboxModel;
|
|
6
7
|
dataGridTable: (finder: import("./data-grid/table").DataGridTableFinder) => import("./data-grid/table").DataGridTableModel;
|
package/components.js
CHANGED
|
@@ -10,6 +10,7 @@ const datetime_picker_input_1 = require("./ui/datetime-picker-input");
|
|
|
10
10
|
const dropzone_1 = require("./ui/dropzone");
|
|
11
11
|
const flash_messages_1 = require("./ui/flash-messages");
|
|
12
12
|
const h1_1 = require("./ui/h1");
|
|
13
|
+
const icon_button_1 = require("./ui/icon-button");
|
|
13
14
|
const multi_combobox_1 = require("./ui/multi-combobox");
|
|
14
15
|
const multi_select_1 = require("./ui/multi-select");
|
|
15
16
|
const radio_group_1 = require("./ui/radio-group");
|
|
@@ -21,6 +22,7 @@ const toggle_1 = require("./ui/toggle");
|
|
|
21
22
|
function createUi(page) {
|
|
22
23
|
return {
|
|
23
24
|
button: (0, button_1.button)(page),
|
|
25
|
+
iconButton: (0, icon_button_1.iconButton)(page),
|
|
24
26
|
checkboxInput: (0, checkbox_input_1.checkboxInput)(page),
|
|
25
27
|
combobox: (0, combobox_1.combobox)(page),
|
|
26
28
|
dataGridTable: (0, table_1.dataGridTable)(page),
|
package/data-grid/table.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export declare class DataGridTableModel extends BaseModel {
|
|
|
9
9
|
private readonly headerLocator;
|
|
10
10
|
constructor(page: Page, finder: DataGridTableFinder);
|
|
11
11
|
private getColumnIndex;
|
|
12
|
-
|
|
12
|
+
shouldHaveRowCount(count: number): Promise<void>;
|
|
13
13
|
/** When using a numeric column index, checkbox and action cells are counted */
|
|
14
14
|
shouldHaveCellValue(data: {
|
|
15
15
|
content: string;
|
package/data-grid/table.e2e.js
CHANGED
|
@@ -5,7 +5,7 @@ const components_1 = require("../components");
|
|
|
5
5
|
(0, test_1.test)("DataGridTable", async ({ page }) => {
|
|
6
6
|
const ui = (0, components_1.createUi)(page);
|
|
7
7
|
await page.goto("/examples/data-grid/table-v2/Default");
|
|
8
|
-
|
|
8
|
+
await ui.dataGridTable({ nth: 0 }).shouldHaveRowCount(12);
|
|
9
9
|
await ui.dataGridTable({}).shouldHaveCellValue({ column: "Text", content: "Red" });
|
|
10
10
|
await ui.dataGridTable({}).shouldHaveCellValue({ row: 2, column: 1, content: "Green" });
|
|
11
11
|
});
|
package/data-grid/table.js
CHANGED
|
@@ -20,8 +20,8 @@ class DataGridTableModel extends base_model_1.BaseModel {
|
|
|
20
20
|
}
|
|
21
21
|
return index;
|
|
22
22
|
}
|
|
23
|
-
async
|
|
24
|
-
|
|
23
|
+
async shouldHaveRowCount(count) {
|
|
24
|
+
await (0, test_1.expect)(this.bodyLocator.locator(".uxf-dg-table__row")).toHaveCount(count);
|
|
25
25
|
}
|
|
26
26
|
/** When using a numeric column index, checkbox and action cells are counted */
|
|
27
27
|
async shouldHaveCellValue(data) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uxf/e2e-playwright",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.120.0",
|
|
4
4
|
"description": "UXF Playwright helpers",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -18,13 +18,13 @@
|
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"@playwright/test": "1.57.0",
|
|
20
20
|
"@uxf/core": "11.114.0",
|
|
21
|
-
"@uxf/ui": "11.
|
|
21
|
+
"@uxf/ui": "11.120.0",
|
|
22
22
|
"dayjs": "^1.11.19"
|
|
23
23
|
},
|
|
24
24
|
"peerDependencies": {
|
|
25
25
|
"@playwright/test": "1.57.0",
|
|
26
26
|
"@uxf/core": "11.114.0",
|
|
27
|
-
"@uxf/ui": "11.
|
|
27
|
+
"@uxf/ui": "11.120.0",
|
|
28
28
|
"dayjs": "^1.11.19"
|
|
29
29
|
}
|
|
30
30
|
}
|
package/ui/button.e2e.js
CHANGED
|
@@ -18,3 +18,9 @@ const components_1 = require("../components");
|
|
|
18
18
|
await ui.button({ parent: cardA, text: "Confirm" }).click();
|
|
19
19
|
await ui.button({ parent: cardB, text: "Confirm" }).click();
|
|
20
20
|
});
|
|
21
|
+
(0, test_1.test)("UI Button - icon with text (exact match)", async ({ page }) => {
|
|
22
|
+
await page.goto("/examples/ui/button/OnlyForE2ETests");
|
|
23
|
+
const ui = (0, components_1.createUi)(page);
|
|
24
|
+
await ui.button({ text: "Vyřešené" }).click();
|
|
25
|
+
await (0, test_1.expect)(page.getByTestId("last-clicked")).toHaveText("Vyřešené");
|
|
26
|
+
});
|
package/ui/button.js
CHANGED
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.button = exports.ButtonModel = void 0;
|
|
4
4
|
const base_model_1 = require("../utils/base-model");
|
|
5
|
+
const exact_text_1 = require("../utils/exact-text");
|
|
5
6
|
class ButtonModel extends base_model_1.BaseModel {
|
|
6
7
|
constructor(page, finder) {
|
|
7
8
|
var _a, _b;
|
|
8
9
|
const root = (_a = finder.parent) !== null && _a !== void 0 ? _a : page;
|
|
9
|
-
const locator = root.locator("a.uxf-button", { hasText: finder.text }).nth((_b = finder.nth) !== null && _b !== void 0 ? _b : 0);
|
|
10
|
+
const locator = root.locator("a.uxf-button", { hasText: (0, exact_text_1.exactText)(finder.text) }).nth((_b = finder.nth) !== null && _b !== void 0 ? _b : 0);
|
|
10
11
|
super(page, locator);
|
|
11
12
|
this.finder = finder;
|
|
12
13
|
}
|
package/ui/combobox.e2e.js
CHANGED
|
@@ -16,3 +16,9 @@ const components_1 = require("../components");
|
|
|
16
16
|
await ui.combobox({ $name: "color" }).change("Blue");
|
|
17
17
|
await ui.combobox({ $name: "size" }).change("Medium");
|
|
18
18
|
});
|
|
19
|
+
(0, test_1.test)("Combobox - exact option match", async ({ page }) => {
|
|
20
|
+
const ui = (0, components_1.createUi)(page);
|
|
21
|
+
await page.goto("/examples/ui/combobox/OnlyForE2ETests");
|
|
22
|
+
await ui.combobox({ $name: "stav" }).change("Vyřešené");
|
|
23
|
+
await (0, test_1.expect)(page.getByTestId("selected-stav")).toHaveText("vyresene");
|
|
24
|
+
});
|
package/ui/combobox.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.combobox = exports.ComboboxModel = void 0;
|
|
4
4
|
const combobox_1 = require("@uxf/ui/combobox/combobox");
|
|
5
|
+
const exact_text_1 = require("../utils/exact-text");
|
|
5
6
|
const form_component_model_1 = require("../utils/form-component-model");
|
|
6
7
|
class ComboboxModel extends form_component_model_1.FormComponentModel {
|
|
7
8
|
constructor(page, finder) {
|
|
@@ -10,7 +11,10 @@ class ComboboxModel extends form_component_model_1.FormComponentModel {
|
|
|
10
11
|
}
|
|
11
12
|
async change(value) {
|
|
12
13
|
await this.inputLocator.fill(value);
|
|
13
|
-
const item = this.page
|
|
14
|
+
const item = this.page
|
|
15
|
+
.locator("li.uxf-dropdown__item")
|
|
16
|
+
.filter({ hasText: (0, exact_text_1.exactText)(value) })
|
|
17
|
+
.first();
|
|
14
18
|
await item.waitFor({ state: "visible" });
|
|
15
19
|
await item.click();
|
|
16
20
|
await item.waitFor({ state: "hidden" });
|
package/ui/flash-messages.e2e.js
CHANGED
|
@@ -10,3 +10,10 @@ const components_1 = require("../components");
|
|
|
10
10
|
await ui.button({ text: "Error" }).click();
|
|
11
11
|
await ui.flashMessages().shouldExistMessage("Error message");
|
|
12
12
|
});
|
|
13
|
+
(0, test_1.test)("FlashMessages - exact message match", async ({ page }) => {
|
|
14
|
+
await page.goto("/examples/ui/flash-messages/OnlyForE2ETests");
|
|
15
|
+
const ui = (0, components_1.createUi)(page);
|
|
16
|
+
await ui.button({ text: "Zobrazit Vyřešené" }).click();
|
|
17
|
+
await ui.button({ text: "Zobrazit Nevyřešené" }).click();
|
|
18
|
+
await ui.flashMessages().shouldExistMessage("Vyřešené");
|
|
19
|
+
});
|
package/ui/flash-messages.js
CHANGED
|
@@ -4,12 +4,13 @@ exports.flashMessages = exports.FlashMessagesModel = void 0;
|
|
|
4
4
|
const test_1 = require("@playwright/test");
|
|
5
5
|
const flash_messages_1 = require("@uxf/ui/flash-messages/flash-messages");
|
|
6
6
|
const base_model_1 = require("../utils/base-model");
|
|
7
|
+
const exact_text_1 = require("../utils/exact-text");
|
|
7
8
|
class FlashMessagesModel extends base_model_1.BaseModel {
|
|
8
9
|
constructor(page) {
|
|
9
10
|
super(page, page.locator(`[data-component=${flash_messages_1.FLASH_MESSAGES_COMPONENT_NAME}]`));
|
|
10
11
|
}
|
|
11
12
|
async shouldExistMessage(text) {
|
|
12
|
-
await (0, test_1.expect)(this.locator.locator(".uxf-flash-message").filter({ hasText: text })).toHaveCount(1);
|
|
13
|
+
await (0, test_1.expect)(this.locator.locator(".uxf-flash-message").filter({ hasText: (0, exact_text_1.exactText)(text) })).toHaveCount(1);
|
|
13
14
|
}
|
|
14
15
|
}
|
|
15
16
|
exports.FlashMessagesModel = FlashMessagesModel;
|
package/ui/h1.e2e.js
CHANGED
|
@@ -8,3 +8,10 @@ const components_1 = require("../components");
|
|
|
8
8
|
await ui.h1().shouldHaveText("UXF Frontend monorepo");
|
|
9
9
|
await ui.h1().shouldHaveText("uxf Frontend monorepo");
|
|
10
10
|
});
|
|
11
|
+
(0, test_1.test)("H1 - space and nbsp match interchangeably", async ({ page }) => {
|
|
12
|
+
await page.goto("/examples/ui/typography/OnlyForE2ETests");
|
|
13
|
+
const ui = (0, components_1.createUi)(page);
|
|
14
|
+
await ui.h1().shouldHaveText("Text bez pevné mezery");
|
|
15
|
+
await ui.h1().shouldHaveText("Text s pevnou mezerou");
|
|
16
|
+
await ui.h1().shouldHaveText("Text s\u00a0pevnou mezerou");
|
|
17
|
+
});
|
package/ui/h1.js
CHANGED
|
@@ -3,12 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.h1 = exports.H1Model = void 0;
|
|
4
4
|
const test_1 = require("@playwright/test");
|
|
5
5
|
const base_model_1 = require("../utils/base-model");
|
|
6
|
+
const exact_text_1 = require("../utils/exact-text");
|
|
6
7
|
class H1Model extends base_model_1.BaseModel {
|
|
7
8
|
constructor(page) {
|
|
8
9
|
super(page, page.locator("h1"));
|
|
9
10
|
}
|
|
10
11
|
shouldHaveText(text) {
|
|
11
|
-
return (0, test_1.expect)(this.locator.filter({ hasText:
|
|
12
|
+
return (0, test_1.expect)(this.locator.filter({ hasText: (0, exact_text_1.exactText)(text) })).toHaveCount(1);
|
|
12
13
|
}
|
|
13
14
|
}
|
|
14
15
|
exports.H1Model = H1Model;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Page } from "@playwright/test";
|
|
2
|
+
import { BaseFinder } from "../utils/base-finder";
|
|
3
|
+
import { BaseModel } from "../utils/base-model";
|
|
4
|
+
export interface IconButtonFinder extends BaseFinder {
|
|
5
|
+
title: string;
|
|
6
|
+
nth?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare class IconButtonModel extends BaseModel {
|
|
9
|
+
protected readonly finder: IconButtonFinder;
|
|
10
|
+
constructor(page: Page, finder: IconButtonFinder);
|
|
11
|
+
click(): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
export declare const iconButton: (page: Page) => (finder: IconButtonFinder) => IconButtonModel;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const test_1 = require("@playwright/test");
|
|
4
|
+
const components_1 = require("../components");
|
|
5
|
+
(0, test_1.test)("UI IconButton - IconButton component", async ({ page }) => {
|
|
6
|
+
await page.goto("/examples/ui/icon-button/OnlyForE2ETests");
|
|
7
|
+
const ui = (0, components_1.createUi)(page);
|
|
8
|
+
await ui.iconButton({ title: "Potvrdit" }).shouldExist();
|
|
9
|
+
await ui.iconButton({ title: "Potvrdit" }).click();
|
|
10
|
+
await (0, test_1.expect)(page.getByTestId("last-clicked")).toHaveText("Potvrdit");
|
|
11
|
+
});
|
|
12
|
+
(0, test_1.test)("UI IconButton - deprecated Button with isIconButton", async ({ page }) => {
|
|
13
|
+
await page.goto("/examples/ui/icon-button/OnlyForE2ETests");
|
|
14
|
+
const ui = (0, components_1.createUi)(page);
|
|
15
|
+
await ui.iconButton({ title: "Smazat" }).shouldExist();
|
|
16
|
+
await ui.iconButton({ title: "Smazat" }).click();
|
|
17
|
+
await (0, test_1.expect)(page.getByTestId("last-clicked")).toHaveText("Smazat");
|
|
18
|
+
});
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.iconButton = exports.IconButtonModel = void 0;
|
|
4
|
+
const base_model_1 = require("../utils/base-model");
|
|
5
|
+
class IconButtonModel extends base_model_1.BaseModel {
|
|
6
|
+
constructor(page, finder) {
|
|
7
|
+
var _a, _b;
|
|
8
|
+
const root = (_a = finder.parent) !== null && _a !== void 0 ? _a : page;
|
|
9
|
+
// uxf-icon-button = IconButton component, uxf-button--icon-button = deprecated Button with isIconButton prop
|
|
10
|
+
const locator = root
|
|
11
|
+
.locator(":is(a.uxf-icon-button, a.uxf-button--icon-button)")
|
|
12
|
+
.and(root.getByTitle(finder.title))
|
|
13
|
+
.nth((_b = finder.nth) !== null && _b !== void 0 ? _b : 0);
|
|
14
|
+
super(page, locator);
|
|
15
|
+
this.finder = finder;
|
|
16
|
+
}
|
|
17
|
+
click() {
|
|
18
|
+
return this.locator.click();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.IconButtonModel = IconButtonModel;
|
|
22
|
+
const iconButton = (page) => (finder) => new IconButtonModel(page, finder);
|
|
23
|
+
exports.iconButton = iconButton;
|
package/ui/multi-select.e2e.js
CHANGED
|
@@ -7,3 +7,9 @@ const components_1 = require("../components");
|
|
|
7
7
|
await page.goto("/examples/ui/multi-select/Default");
|
|
8
8
|
await ui.multiSelect({ $name: "default" }).change(["Option red", "Option green"]);
|
|
9
9
|
});
|
|
10
|
+
(0, test_1.test)("MultiSelect - exact option match", async ({ page }) => {
|
|
11
|
+
const ui = (0, components_1.createUi)(page);
|
|
12
|
+
await page.goto("/examples/ui/multi-select/OnlyForE2ETests");
|
|
13
|
+
await ui.multiSelect({ $name: "stav" }).change(["Vyřešené"]);
|
|
14
|
+
await (0, test_1.expect)(page.getByTestId("selected-value")).toHaveText("vyresene");
|
|
15
|
+
});
|
package/ui/multi-select.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.multiSelect = exports.MultiSelectModel = void 0;
|
|
4
4
|
const multi_select_1 = require("@uxf/ui/multi-select/multi-select");
|
|
5
|
+
const exact_text_1 = require("../utils/exact-text");
|
|
5
6
|
const form_component_model_1 = require("../utils/form-component-model");
|
|
6
7
|
class MultiSelectModel extends form_component_model_1.FormComponentModel {
|
|
7
8
|
constructor(page, finder) {
|
|
@@ -13,7 +14,10 @@ class MultiSelectModel extends form_component_model_1.FormComponentModel {
|
|
|
13
14
|
await this.buttonLocator.click();
|
|
14
15
|
for (const optionText of optionTexts) {
|
|
15
16
|
// eslint-disable-next-line no-await-in-loop
|
|
16
|
-
await this.page
|
|
17
|
+
await this.page
|
|
18
|
+
.locator(".uxf-dropdown__item")
|
|
19
|
+
.filter({ hasText: (0, exact_text_1.exactText)(optionText) })
|
|
20
|
+
.click();
|
|
17
21
|
}
|
|
18
22
|
await this.buttonLocator.click();
|
|
19
23
|
}
|
package/ui/radio-group.e2e.js
CHANGED
|
@@ -6,5 +6,11 @@ const components_1 = require("../components");
|
|
|
6
6
|
const ui = (0, components_1.createUi)(page);
|
|
7
7
|
await page.goto("/examples/ui/radio-group/Default");
|
|
8
8
|
await ui.radioGroup({ $name: "radio-group" }).change("Radio two");
|
|
9
|
-
await ui.radioGroup({ $name: "radio-group" }).change("Radio three");
|
|
9
|
+
await ui.radioGroup({ $name: "radio-group" }).change("Radio three-sixty");
|
|
10
|
+
});
|
|
11
|
+
(0, test_1.test)("RadioGroup - exact option match", async ({ page }) => {
|
|
12
|
+
const ui = (0, components_1.createUi)(page);
|
|
13
|
+
await page.goto("/examples/ui/radio-group/OnlyForE2ETests");
|
|
14
|
+
await ui.radioGroup({ $name: "stav" }).change("Vyřešené");
|
|
15
|
+
await (0, test_1.expect)(page.getByTestId("selected-value")).toHaveText("vyresene");
|
|
10
16
|
});
|
package/ui/radio-group.js
CHANGED
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.radioGroup = exports.RadioGroupModel = void 0;
|
|
4
4
|
const radio_group_1 = require("@uxf/ui/radio-group/radio-group");
|
|
5
|
+
const exact_text_1 = require("../utils/exact-text");
|
|
5
6
|
const form_component_model_1 = require("../utils/form-component-model");
|
|
6
7
|
class RadioGroupModel extends form_component_model_1.FormComponentModel {
|
|
7
8
|
constructor(page, finder) {
|
|
8
9
|
super(radio_group_1.RADIO_GROUP_COMPONENT_NAME, page, finder);
|
|
9
10
|
}
|
|
10
11
|
async change(value) {
|
|
11
|
-
const option = this.locator.locator(".uxf-radio-group__option").filter({ hasText: value });
|
|
12
|
+
const option = this.locator.locator(".uxf-radio-group__option").filter({ hasText: (0, exact_text_1.exactText)(value) });
|
|
12
13
|
await option.click();
|
|
13
14
|
}
|
|
14
15
|
}
|
package/ui/select.e2e.js
CHANGED
|
@@ -8,3 +8,9 @@ const components_1 = require("../components");
|
|
|
8
8
|
await ui.select({ $name: "select" }).change("Option six");
|
|
9
9
|
await ui.select({ $name: "select" }).change("Option nine");
|
|
10
10
|
});
|
|
11
|
+
(0, test_1.test)("Select - exact option match", async ({ page }) => {
|
|
12
|
+
const ui = (0, components_1.createUi)(page);
|
|
13
|
+
await page.goto("/examples/ui/select/OnlyForE2ETests");
|
|
14
|
+
await ui.select({ $name: "stav" }).change("Vyřešené");
|
|
15
|
+
await (0, test_1.expect)(page.getByTestId("selected-value")).toHaveText("vyresene");
|
|
16
|
+
});
|
package/ui/select.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.select = exports.SelectModel = void 0;
|
|
4
4
|
const select_1 = require("@uxf/ui/select/select");
|
|
5
|
+
const exact_text_1 = require("../utils/exact-text");
|
|
5
6
|
const form_component_model_1 = require("../utils/form-component-model");
|
|
6
7
|
class SelectModel extends form_component_model_1.FormComponentModel {
|
|
7
8
|
constructor(page, finder) {
|
|
@@ -10,7 +11,10 @@ class SelectModel extends form_component_model_1.FormComponentModel {
|
|
|
10
11
|
}
|
|
11
12
|
async change(optionText) {
|
|
12
13
|
await this.buttonLocator.click();
|
|
13
|
-
await this.page
|
|
14
|
+
await this.page
|
|
15
|
+
.locator(".uxf-dropdown__item")
|
|
16
|
+
.filter({ hasText: (0, exact_text_1.exactText)(optionText) })
|
|
17
|
+
.click();
|
|
14
18
|
}
|
|
15
19
|
}
|
|
16
20
|
exports.SelectModel = SelectModel;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function exactText(text: string): RegExp;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.exactText = exactText;
|
|
4
|
+
function exactText(text) {
|
|
5
|
+
const escaped = text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
6
|
+
const normalized = escaped.replace(/[ \u00a0]/g, "[ \u00a0]");
|
|
7
|
+
return new RegExp(`^${normalized}$`, "i");
|
|
8
|
+
}
|