@uxf/e2e 11.49.1 → 11.50.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 CHANGED
@@ -20,6 +20,7 @@ import { textInput } from "./ui/text-input";
20
20
  import { textLink } from "./ui/text-link";
21
21
  import { textarea } from "./ui/textarea";
22
22
  import { toggle } from "./ui/toggle";
23
+ import { multiSelect } from "./ui/multi-select";
23
24
  export declare const components: {
24
25
  button: typeof button;
25
26
  buttonGroup: typeof buttonGroup;
@@ -36,6 +37,7 @@ export declare const components: {
36
37
  message: typeof message;
37
38
  modal: typeof modal;
38
39
  multiCombobox: typeof multiCombobox;
40
+ multiSelect: typeof multiSelect;
39
41
  radioGroup: typeof radioGroup;
40
42
  select: typeof select;
41
43
  textarea: typeof textarea;
package/components.js CHANGED
@@ -23,6 +23,7 @@ const text_input_1 = require("./ui/text-input");
23
23
  const text_link_1 = require("./ui/text-link");
24
24
  const textarea_1 = require("./ui/textarea");
25
25
  const toggle_1 = require("./ui/toggle");
26
+ const multi_select_1 = require("./ui/multi-select");
26
27
  exports.components = {
27
28
  button: button_1.button,
28
29
  buttonGroup: button_group_1.buttonGroup,
@@ -39,6 +40,7 @@ exports.components = {
39
40
  message: message_1.message,
40
41
  modal: modal_1.modal,
41
42
  multiCombobox: multi_combobox_1.multiCombobox,
43
+ multiSelect: multi_select_1.multiSelect,
42
44
  radioGroup: radio_group_1.radioGroup,
43
45
  select: select_1.select,
44
46
  textarea: textarea_1.textarea,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uxf/e2e",
3
- "version": "11.49.1",
3
+ "version": "11.50.0",
4
4
  "description": "UXF TestCafe helpers",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const testcafe_1 = require("testcafe");
4
+ const components_1 = require("../components");
5
+ const config_1 = require("../config");
6
+ const wait_for_react_1 = require("../utils/wait-for-react");
7
+ (0, testcafe_1.fixture)("Datagrid V2")
8
+ .page(config_1.BASE_URL + "/examples/data-grid/data-grid-v2/Default")
9
+ .httpAuth({ username: "uxf", password: "uxf" })
10
+ .beforeEach(async (t) => {
11
+ await (0, wait_for_react_1.waitForReact)(10000, t);
12
+ });
13
+ (0, testcafe_1.test)("Filters", async (t) => {
14
+ //otevření filtrů
15
+ await components_1.components.iconButton({ iconName: "icon-sprite--filter" }).click();
16
+ //number inputy Number interval (od) a Number interval (do)
17
+ await components_1.components.input({ name: "interval.from" }).type("3");
18
+ await components_1.components.input({ name: "interval.from" }).shouldHaveValue("3");
19
+ await components_1.components.input({ name: "interval.to" }).type("5");
20
+ await components_1.components.input({ name: "interval.to" }).shouldHaveValue("5");
21
+ //email
22
+ await components_1.components.input({ name: "mail" }).type("test@uxf.cz");
23
+ await components_1.components.input({ name: "mail" }).shouldHaveValue("test@uxf.cz");
24
+ //datepicker Date (od) a Date (do)
25
+ await components_1.components.datePickerInput({ dataName: "date.from" }).selectDate(10, 10, 2030);
26
+ await components_1.components.datePickerInput({ dataName: "date.from" }).shouldHaveValue("10. 10. 2030");
27
+ await components_1.components.datePickerInput({ dataName: "date.to" }).selectDate(10, 10, 2032);
28
+ await components_1.components.datePickerInput({ dataName: "date.to" }).shouldHaveValue("10. 10. 2032");
29
+ //datetimepicker Datetime (od) a Datetime (do)
30
+ await components_1.components.datetimePickerInput({ dataName: "datetime.from" }).selectDatetime(10, 10, 2030, 10, 30);
31
+ await components_1.components.datetimePickerInput({ dataName: "datetime.from" }).shouldHaveValue("10. 10. 2030 10:30");
32
+ await components_1.components.datetimePickerInput({ dataName: "datetime.to" }).selectDatetime(10, 10, 2032, 12, 0);
33
+ await components_1.components.datetimePickerInput({ dataName: "datetime.to" }).shouldHaveValue("10. 10. 2032 12:00");
34
+ //select
35
+ await components_1.components.select({ dataName: "select" }).selectItemWithText("A");
36
+ await components_1.components.select({ dataName: "select" }).shouldHaveValue("A");
37
+ //multi select
38
+ await components_1.components.multiSelect({ dataName: "multiSelect" }).selectItemsByText(["Option 1", "Option 2"]);
39
+ //zavření filtru
40
+ await components_1.components.iconButton({ iconName: "icon-sprite--xmark" }).click();
41
+ //kontrola zobrazení chipů
42
+ await t.expect((0, testcafe_1.Selector)(".uxf-chip").withText("Number interval: od 3 do 5").exists).ok();
43
+ await t.expect((0, testcafe_1.Selector)(".uxf-chip").withText("E-mail: test@uxf.cz").exists).ok();
44
+ await t.expect((0, testcafe_1.Selector)(".uxf-chip").withText("Date: od 10/10/2030 do 10/10/2032").exists).ok();
45
+ await t
46
+ .expect((0, testcafe_1.Selector)(".uxf-chip").withText("Datetime: od 10/10/2030 10:30 AM do 10/10/2032 12:00 PM").exists)
47
+ .ok();
48
+ await t.expect((0, testcafe_1.Selector)(".uxf-chip").withText("Select:\xa0A").exists).ok();
49
+ await t.expect((0, testcafe_1.Selector)(".uxf-chip").withText("Multi select:\xa0Option 1, Option 2").exists).ok();
50
+ //otevření filtrů
51
+ await components_1.components.iconButton({ iconName: "icon-sprite--filter" }).click();
52
+ //smazání hodnot u number inputů
53
+ await components_1.components.input({ name: "interval.from" }).replace(" ");
54
+ await components_1.components.input({ name: "interval.to" }).replace(" ");
55
+ //samazání hotnoty text inputu email
56
+ const emailInput = (0, testcafe_1.Selector)(`input[name="mail"]`);
57
+ await t.selectText(emailInput);
58
+ await t.pressKey("delete");
59
+ //smazání datepicker Date (od) a Date (do)
60
+ await components_1.components.datePickerInput({ dataName: "date.from" }).clear();
61
+ await components_1.components.datePickerInput({ dataName: "date.to" }).clear();
62
+ //smazání datetimepicker Datetime (od) a Datetime (do)
63
+ await components_1.components.datetimePickerInput({ dataName: "datetime.from" }).clear();
64
+ await components_1.components.datetimePickerInput({ dataName: "datetime.to" }).clear();
65
+ //smazání hodnoty ze selectu
66
+ await components_1.components.select({ dataName: "select" }).clear();
67
+ //smazání honot z multi selectu
68
+ await components_1.components.multiSelect({ dataName: "multiSelect" }).removeItemsByText(["Option 1", "Option 2"]);
69
+ //zavření filtrů
70
+ await components_1.components.iconButton({ iconName: "icon-sprite--xmark" }).click();
71
+ //kontrola, že se nezobrazují chipy nad datagridem
72
+ await t.expect((0, testcafe_1.Selector)(".uxf-data-grid__filter-list .uxf-chip").exists).notOk();
73
+ });
@@ -16,7 +16,7 @@ const wait_for_react_1 = require("../utils/wait-for-react");
16
16
  await defaultDatePickerInput.shouldNotBeDisabled();
17
17
  await defaultDatePickerInput.selectDate(1, 1, 2024);
18
18
  await defaultDatePickerInput.shouldHaveValue("1. 1. 2024");
19
- await defaultDatePickerInput.replace("05.12.2025");
19
+ await defaultDatePickerInput.replace(5, 12, 2025);
20
20
  await defaultDatePickerInput.shouldHaveValue("5. 12. 2025");
21
21
  //do disabled se nedá psát
22
22
  await components_1.components.datePickerInput({ dataName: "date-disabled" }).shouldBeDisabled();
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const testcafe_1 = require("testcafe");
4
+ const components_1 = require("../components");
5
+ const config_1 = require("../config");
6
+ const wait_for_react_1 = require("../utils/wait-for-react");
7
+ (0, testcafe_1.fixture)("Multi combobox")
8
+ .page(config_1.BASE_URL + "/examples/ui/multi-select/Default")
9
+ .httpAuth({ username: "uxf", password: "uxf" })
10
+ .beforeEach(async (t) => {
11
+ await (0, wait_for_react_1.waitForReact)(10000, t);
12
+ });
13
+ (0, testcafe_1.test)("Multi select", async () => {
14
+ const defaultMultiSelect = components_1.components.multiSelect({ dataName: "multi-select" });
15
+ await defaultMultiSelect.shouldExist();
16
+ await defaultMultiSelect.selectItemsByText(["Option red", "Option blue", "Option four", "Option green"]);
17
+ await defaultMultiSelect.shouldHaveValues(["Option red", "Option blue", "Option four", "Option green"]);
18
+ await defaultMultiSelect.selectItemsByIndex([2, 3]);
19
+ await defaultMultiSelect.shouldHaveValues([
20
+ "Option red",
21
+ "Option blue",
22
+ "Option four",
23
+ "Option seven",
24
+ "Option nine",
25
+ ]);
26
+ await defaultMultiSelect.removeItemsByText(["Option red", "Option blue"]);
27
+ await defaultMultiSelect.removeItemsByIndex([2]);
28
+ await defaultMultiSelect.shouldNotHaveValues(["Option red", "Option blue"]);
29
+ await defaultMultiSelect.shouldHaveValues(["Option four", "Option green", "Option nine"]);
30
+ await components_1.components.multiSelect({ dataName: "multi-select-disabled" }).shouldBeDisabled();
31
+ await components_1.components.multiSelect({ dataName: "multi-select-invalid" }).shouldBeInvalid();
32
+ });
@@ -30,7 +30,7 @@ testcafe_1.test.skip("Menu desktop", async () => {
30
30
  await components_1.components.cms.menu().openUserMenuLink("Změna hesla");
31
31
  await testcafe_1.t.expect((0, testcafe_1.Selector)("h1").withExactText("Změna hesla").exists).ok();
32
32
  });
33
- (0, testcafe_1.test)("Menu mobile", async () => {
33
+ testcafe_1.test.skip("Menu mobile", async () => {
34
34
  await testcafe_1.t.resizeWindow(390, 844);
35
35
  await components_1.components.textInput({ name: "username" }).type("root@uxf.cz");
36
36
  await components_1.components.textInput({ name: "password" }).type("root");
@@ -5,7 +5,7 @@ interface DatePickerInputFinder extends BaseFinder {
5
5
  }
6
6
  export declare function datePickerInput(finder: DatePickerInputFinder): {
7
7
  selectDate(DD: number, MM: number, YYYY: number): TestControllerPromise<any>;
8
- replace(value: string): TestControllerPromise<any>;
8
+ replace(DD: number, MM: number, YYYY: number): TestControllerPromise<any>;
9
9
  shouldHaveValue(value: string): TestControllerPromise<any>;
10
10
  shouldBeDisabled(): TestControllerPromise<any>;
11
11
  shouldNotBeDisabled(): TestControllerPromise<any>;
@@ -13,8 +13,10 @@ function datePickerInput(finder) {
13
13
  selectDate(DD, MM, YYYY) {
14
14
  return testcafe_1.t.typeText(datepickerInputSelector.find(".uxf-input__element"), `${DD}.${MM}.${YYYY}`);
15
15
  },
16
- replace(value) {
17
- return testcafe_1.t.typeText(datepickerInputSelector.find(".uxf-input__element"), value, { replace: true });
16
+ replace(DD, MM, YYYY) {
17
+ return testcafe_1.t.typeText(datepickerInputSelector.find(".uxf-input__element"), `${DD}.${MM}.${YYYY}`, {
18
+ replace: true,
19
+ });
18
20
  },
19
21
  shouldHaveValue(value) {
20
22
  return testcafe_1.t.expect(datepickerInputSelector.find(".uxf-input__element").value).eql(value);
@@ -0,0 +1,17 @@
1
+ import { BaseFinder } from "../utils/base-finder";
2
+ interface MultiSelectFinder extends BaseFinder {
3
+ dataName: string;
4
+ nth?: number;
5
+ }
6
+ export declare function multiSelect(finder: MultiSelectFinder): {
7
+ selectItemsByText(optionTexts: string[]): Promise<void>;
8
+ selectItemsByIndex(indexes: number[]): Promise<void>;
9
+ shouldExist(): TestControllerPromise<any>;
10
+ shouldBeDisabled(): TestControllerPromise<any>;
11
+ shouldBeInvalid(): TestControllerPromise<any>;
12
+ removeItemsByText(optionTexts: string[]): Promise<void>;
13
+ removeItemsByIndex(indexes: number[]): Promise<void>;
14
+ shouldHaveValues(optionTexts: string[]): Promise<void>;
15
+ shouldNotHaveValues(optionTexts: string[]): Promise<void>;
16
+ };
17
+ export {};
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.multiSelect = multiSelect;
4
+ const testcafe_1 = require("testcafe");
5
+ const create_selector_1 = require("../utils/create-selector");
6
+ function multiSelect(finder) {
7
+ var _a;
8
+ const multiSelectSelector = (0, create_selector_1.createSelector)(finder)
9
+ .find(".uxf-multi-select")
10
+ .withAttribute("data-name", finder.dataName)
11
+ .nth((_a = finder.nth) !== null && _a !== void 0 ? _a : 0)
12
+ .find(".uxf-multi-select__button");
13
+ return {
14
+ async selectItemsByText(optionTexts) {
15
+ await testcafe_1.t.click(multiSelectSelector);
16
+ await optionTexts.reduce((promise, optionText) => promise.then(() => testcafe_1.t.click((0, testcafe_1.Selector)(".uxf-dropdown__item").withText(optionText))), Promise.resolve());
17
+ await testcafe_1.t.click(multiSelectSelector.find(".uxf-input__arrow-icon"));
18
+ },
19
+ async selectItemsByIndex(indexes) {
20
+ await testcafe_1.t.click(multiSelectSelector);
21
+ await indexes.reduce((promise, index) => promise.then(() => testcafe_1.t.click((0, testcafe_1.Selector)(".uxf-dropdown__item").nth(index))), Promise.resolve());
22
+ await testcafe_1.t.click(multiSelectSelector.find(".uxf-input__arrow-icon"));
23
+ },
24
+ shouldExist() {
25
+ return testcafe_1.t.expect(multiSelectSelector.exists).ok();
26
+ },
27
+ shouldBeDisabled() {
28
+ return testcafe_1.t.expect(multiSelectSelector.hasClass("is-disabled")).ok();
29
+ },
30
+ shouldBeInvalid() {
31
+ return testcafe_1.t.expect(multiSelectSelector.hasClass("is-invalid")).ok();
32
+ },
33
+ async removeItemsByText(optionTexts) {
34
+ await optionTexts.reduce((promise, text) => promise.then(() => testcafe_1.t.click((0, testcafe_1.Selector)(multiSelectSelector).find(".uxf-chip").withText(text).find(".uxf-chip__button"))), Promise.resolve());
35
+ },
36
+ async removeItemsByIndex(indexes) {
37
+ await indexes.reduce((promise, index) => promise.then(() => testcafe_1.t.click((0, testcafe_1.Selector)(multiSelectSelector).find(".uxf-chip__button").nth(index))), Promise.resolve());
38
+ },
39
+ async shouldHaveValues(optionTexts) {
40
+ await optionTexts.reduce((promise, text) => promise.then(() => testcafe_1.t
41
+ .expect((0, testcafe_1.Selector)(multiSelectSelector).find(".uxf-chip").withText(text).exists)
42
+ .ok(`item "${text}" does not exists but it should exists`)), Promise.resolve());
43
+ },
44
+ async shouldNotHaveValues(optionTexts) {
45
+ await optionTexts.reduce((promise, text) => promise.then(() => testcafe_1.t
46
+ .expect((0, testcafe_1.Selector)(multiSelectSelector).find(".uxf-chip").withText(text).exists)
47
+ .notOk(`item "${text}" exists but it should not exist`)), Promise.resolve());
48
+ },
49
+ };
50
+ }
package/ui/select.d.ts CHANGED
@@ -12,5 +12,6 @@ export declare function select(finder: SelectInputFinder): {
12
12
  shouldNotBeDisabled(): TestControllerPromise<any>;
13
13
  shouldExists(): TestControllerPromise<any>;
14
14
  shouldNotExists(): TestControllerPromise<any>;
15
+ clear(): TestControllerPromise<any>;
15
16
  };
16
17
  export {};
package/ui/select.js CHANGED
@@ -37,5 +37,8 @@ function select(finder) {
37
37
  shouldNotExists() {
38
38
  return testcafe_1.t.expect(buttonSelector.exists).notOk(`Select with data-name: ${finder.dataName} should not exists`);
39
39
  },
40
+ clear() {
41
+ return testcafe_1.t.click(buttonSelector.nextSibling().find(".uxf-input__remove-button"));
42
+ },
40
43
  };
41
44
  }