@uxf/e2e-playwright 11.76.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/README.md +5 -0
- package/components.d.ts +16 -0
- package/components.js +33 -0
- package/index.d.ts +1 -0
- package/index.js +17 -0
- package/package.json +25 -0
- package/playwright.config.d.ts +9 -0
- package/playwright.config.js +75 -0
- package/ui/button.d.ts +13 -0
- package/ui/button.e2e.d.ts +1 -0
- package/ui/button.e2e.js +11 -0
- package/ui/button.js +18 -0
- package/ui/checkbox-input.d.ts +12 -0
- package/ui/checkbox-input.e2e.d.ts +1 -0
- package/ui/checkbox-input.e2e.js +11 -0
- package/ui/checkbox-input.js +21 -0
- package/ui/combobox.d.ts +11 -0
- package/ui/combobox.e2e.d.ts +1 -0
- package/ui/combobox.e2e.js +10 -0
- package/ui/combobox.js +20 -0
- package/ui/date-picker-input.d.ts +11 -0
- package/ui/date-picker-input.e2e.d.ts +1 -0
- package/ui/date-picker-input.e2e.js +13 -0
- package/ui/date-picker-input.js +23 -0
- package/ui/datetime-picker-input.d.ts +11 -0
- package/ui/datetime-picker-input.e2e.d.ts +1 -0
- package/ui/datetime-picker-input.e2e.js +13 -0
- package/ui/datetime-picker-input.js +23 -0
- package/ui/dropzone.d.ts +11 -0
- package/ui/dropzone.e2e.d.ts +1 -0
- package/ui/dropzone.e2e.js +35 -0
- package/ui/dropzone.js +20 -0
- package/ui/multi-combobox.d.ts +12 -0
- package/ui/multi-combobox.e2e.d.ts +1 -0
- package/ui/multi-combobox.e2e.js +14 -0
- package/ui/multi-combobox.js +26 -0
- package/ui/multi-select.d.ts +11 -0
- package/ui/multi-select.e2e.d.ts +1 -0
- package/ui/multi-select.e2e.js +9 -0
- package/ui/multi-select.js +24 -0
- package/ui/radio-group.d.ts +10 -0
- package/ui/radio-group.e2e.d.ts +1 -0
- package/ui/radio-group.e2e.js +10 -0
- package/ui/radio-group.js +18 -0
- package/ui/select.d.ts +11 -0
- package/ui/select.e2e.d.ts +1 -0
- package/ui/select.e2e.js +10 -0
- package/ui/select.js +19 -0
- package/ui/text-input.d.ts +10 -0
- package/ui/text-input.e2e.d.ts +1 -0
- package/ui/text-input.e2e.js +9 -0
- package/ui/text-input.js +17 -0
- package/ui/textarea.d.ts +10 -0
- package/ui/textarea.e2e.d.ts +1 -0
- package/ui/textarea.e2e.js +9 -0
- package/ui/textarea.js +18 -0
- package/ui/toggle.d.ts +10 -0
- package/ui/toggle.e2e.d.ts +1 -0
- package/ui/toggle.e2e.js +11 -0
- package/ui/toggle.js +20 -0
- package/utils/base-finder.d.ts +7 -0
- package/utils/base-finder.js +2 -0
- package/utils/base-model.d.ts +8 -0
- package/utils/base-model.js +17 -0
- package/utils/form-component-model.d.ts +6 -0
- package/utils/form-component-model.js +10 -0
package/README.md
ADDED
package/components.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Page } from "@playwright/test";
|
|
2
|
+
export declare function createUi(page: Page): {
|
|
3
|
+
button: (finder: import("./ui/button").ButtonFinder) => import("./ui/button").ButtonModel;
|
|
4
|
+
checkboxInput: (finder: import("./ui/checkbox-input").CheckboxInputFinder) => import("./ui/checkbox-input").CheckboxInputModel;
|
|
5
|
+
combobox: (finder: import("./ui/combobox").ComboboxFinder) => import("./ui/combobox").ComboboxModel;
|
|
6
|
+
datePickerInput: (finder: import("./ui/date-picker-input").DatePickerInputFinder) => import("./ui/date-picker-input").DatePickerInputModel;
|
|
7
|
+
datetimePickerInput: (finder: import("./ui/datetime-picker-input").DatetimePickerInputFinder) => import("./ui/datetime-picker-input").DatetimePickerInputModel;
|
|
8
|
+
dropzone: (finder: import("./ui/dropzone").DropzoneFinder) => import("./ui/dropzone").DropzoneModel;
|
|
9
|
+
multiCombobox: (finder: import("./ui/multi-combobox").MultiComboboxFinder) => import("./ui/multi-combobox").MultiComboboxModel;
|
|
10
|
+
multiSelect: (finder: import("./ui/multi-select").MultiSelectFinder) => import("./ui/multi-select").MultiSelectModel;
|
|
11
|
+
radioGroup: (finder: import("./ui/radio-group").RadioGroupFinder) => import("./ui/radio-group").RadioGroupModel;
|
|
12
|
+
textarea: (finder: import("./ui/textarea").TextareaFinder) => import("./ui/textarea").TextareaModel;
|
|
13
|
+
select: (finder: import("./ui/select").SelectFinder) => import("./ui/select").SelectModel;
|
|
14
|
+
textInput: (finder: import("./ui/text-input").TextInputFinder) => import("./ui/text-input").TextInputModel;
|
|
15
|
+
toggle: (finder: import("./ui/toggle").ToggleFinder) => import("./ui/toggle").ToggleModel;
|
|
16
|
+
};
|
package/components.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createUi = createUi;
|
|
4
|
+
const button_1 = require("./ui/button");
|
|
5
|
+
const checkbox_input_1 = require("./ui/checkbox-input");
|
|
6
|
+
const combobox_1 = require("./ui/combobox");
|
|
7
|
+
const date_picker_input_1 = require("./ui/date-picker-input");
|
|
8
|
+
const datetime_picker_input_1 = require("./ui/datetime-picker-input");
|
|
9
|
+
const dropzone_1 = require("./ui/dropzone");
|
|
10
|
+
const multi_combobox_1 = require("./ui/multi-combobox");
|
|
11
|
+
const multi_select_1 = require("./ui/multi-select");
|
|
12
|
+
const radio_group_1 = require("./ui/radio-group");
|
|
13
|
+
const select_1 = require("./ui/select");
|
|
14
|
+
const text_input_1 = require("./ui/text-input");
|
|
15
|
+
const textarea_1 = require("./ui/textarea");
|
|
16
|
+
const toggle_1 = require("./ui/toggle");
|
|
17
|
+
function createUi(page) {
|
|
18
|
+
return {
|
|
19
|
+
button: (0, button_1.button)(page),
|
|
20
|
+
checkboxInput: (0, checkbox_input_1.checkboxInput)(page),
|
|
21
|
+
combobox: (0, combobox_1.combobox)(page),
|
|
22
|
+
datePickerInput: (0, date_picker_input_1.datePickerInput)(page),
|
|
23
|
+
datetimePickerInput: (0, datetime_picker_input_1.datetimePickerInput)(page),
|
|
24
|
+
dropzone: (0, dropzone_1.dropzone)(page),
|
|
25
|
+
multiCombobox: (0, multi_combobox_1.multiCombobox)(page),
|
|
26
|
+
multiSelect: (0, multi_select_1.multiSelect)(page),
|
|
27
|
+
radioGroup: (0, radio_group_1.radioGroup)(page),
|
|
28
|
+
textarea: (0, textarea_1.textarea)(page),
|
|
29
|
+
select: (0, select_1.select)(page),
|
|
30
|
+
textInput: (0, text_input_1.textInput)(page),
|
|
31
|
+
toggle: (0, toggle_1.toggle)(page),
|
|
32
|
+
};
|
|
33
|
+
}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./components";
|
package/index.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./components"), exports);
|
package/package.json
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@uxf/e2e-playwright",
|
|
3
|
+
"version": "11.76.0",
|
|
4
|
+
"description": "UXF Playwright helpers",
|
|
5
|
+
"publishConfig": {
|
|
6
|
+
"access": "public"
|
|
7
|
+
},
|
|
8
|
+
"scripts": {
|
|
9
|
+
"build": "npm run compile",
|
|
10
|
+
"compile": "tsc -P tsconfig.json",
|
|
11
|
+
"e2e:ui": "BASE_URL=http://localhost:3000 ../../node_modules/.bin/playwright test --ui",
|
|
12
|
+
"e2e:debug": "BASE_URL=http://localhost:3000 ../../node_modules/.bin/playwright test --debug",
|
|
13
|
+
"e2e:ci": "../../node_modules/.bin/playwright test",
|
|
14
|
+
"typecheck": "../../node_modules/.bin/tsc --noEmit --skipLibCheck"
|
|
15
|
+
},
|
|
16
|
+
"author": "UX Fans s.r.o",
|
|
17
|
+
"license": "MIT",
|
|
18
|
+
"devDependencies": {
|
|
19
|
+
"dayjs": "1.11.10",
|
|
20
|
+
"@playwright/test": "1.54.2"
|
|
21
|
+
},
|
|
22
|
+
"peerDependencies": {
|
|
23
|
+
"@playwright/test": "1.54.2"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read environment variables from file.
|
|
3
|
+
* https://github.com/motdotla/dotenv
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* See https://playwright.dev/docs/test-configuration.
|
|
7
|
+
*/
|
|
8
|
+
declare const _default: import("@playwright/test").PlaywrightTestConfig<{}, {}>;
|
|
9
|
+
export default _default;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const test_1 = require("@playwright/test");
|
|
4
|
+
/**
|
|
5
|
+
* Read environment variables from file.
|
|
6
|
+
* https://github.com/motdotla/dotenv
|
|
7
|
+
*/
|
|
8
|
+
// import dotenv from 'dotenv';
|
|
9
|
+
// import path from 'path';
|
|
10
|
+
// dotenv.config({ path: path.resolve(__dirname, '.env') });
|
|
11
|
+
/**
|
|
12
|
+
* See https://playwright.dev/docs/test-configuration.
|
|
13
|
+
*/
|
|
14
|
+
exports.default = (0, test_1.defineConfig)({
|
|
15
|
+
testDir: "./ui",
|
|
16
|
+
testMatch: "**/*.e2e.ts",
|
|
17
|
+
/* Run tests in files in parallel */
|
|
18
|
+
fullyParallel: true,
|
|
19
|
+
/* Fail the build on CI if you accidentally left test.only in the source code. */
|
|
20
|
+
forbidOnly: Boolean(process.env.CI),
|
|
21
|
+
/* Retry on CI only */
|
|
22
|
+
retries: process.env.CI ? 2 : 0,
|
|
23
|
+
/* Opt out of parallel tests on CI. */
|
|
24
|
+
workers: process.env.CI ? 1 : undefined,
|
|
25
|
+
/* Reporter to use. See https://playwright.dev/docs/test-reporters */
|
|
26
|
+
reporter: "html",
|
|
27
|
+
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
|
|
28
|
+
use: {
|
|
29
|
+
baseURL: process.env.BASE_URL,
|
|
30
|
+
trace: "on-first-retry",
|
|
31
|
+
httpCredentials: {
|
|
32
|
+
username: "uxf",
|
|
33
|
+
password: "uxf",
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
/* Configure projects for major browsers */
|
|
37
|
+
projects: [
|
|
38
|
+
{
|
|
39
|
+
name: "chromium",
|
|
40
|
+
use: { ...test_1.devices["Desktop Chrome"] },
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: "firefox",
|
|
44
|
+
use: { ...test_1.devices["Desktop Firefox"] },
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: "webkit",
|
|
48
|
+
use: { ...test_1.devices["Desktop Safari"] },
|
|
49
|
+
},
|
|
50
|
+
/* Test against mobile viewports. */
|
|
51
|
+
// {
|
|
52
|
+
// name: 'Mobile Chrome',
|
|
53
|
+
// use: { ...devices['Pixel 5'] },
|
|
54
|
+
// },
|
|
55
|
+
// {
|
|
56
|
+
// name: 'Mobile Safari',
|
|
57
|
+
// use: { ...devices['iPhone 12'] },
|
|
58
|
+
// },
|
|
59
|
+
/* Test against branded browsers. */
|
|
60
|
+
// {
|
|
61
|
+
// name: 'Microsoft Edge',
|
|
62
|
+
// use: { ...devices['Desktop Edge'], channel: 'msedge' },
|
|
63
|
+
// },
|
|
64
|
+
// {
|
|
65
|
+
// name: 'Google Chrome',
|
|
66
|
+
// use: { ...devices['Desktop Chrome'], channel: 'chrome' },
|
|
67
|
+
// },
|
|
68
|
+
],
|
|
69
|
+
/* Run your local dev server before starting the tests */
|
|
70
|
+
// webServer: {
|
|
71
|
+
// command: 'npm run start',
|
|
72
|
+
// url: 'http://localhost:3000',
|
|
73
|
+
// reuseExistingServer: !process.env.CI,
|
|
74
|
+
// },
|
|
75
|
+
});
|
package/ui/button.d.ts
ADDED
|
@@ -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 ButtonFinder extends BaseFinder {
|
|
5
|
+
text: string;
|
|
6
|
+
nth?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare class ButtonModel extends BaseModel {
|
|
9
|
+
protected readonly finder: ButtonFinder;
|
|
10
|
+
constructor(page: Page, finder: ButtonFinder);
|
|
11
|
+
click(): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
export declare const button: (page: Page) => (finder: ButtonFinder) => ButtonModel;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/ui/button.e2e.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
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 Button", async ({ page }) => {
|
|
6
|
+
await page.goto("/examples/ui/button/Default");
|
|
7
|
+
const ui = (0, components_1.createUi)(page);
|
|
8
|
+
await ui.button({ text: "Default" }).click();
|
|
9
|
+
await ui.button({ text: "Default" }).shouldExist();
|
|
10
|
+
await ui.button({ text: "Not found" }).shouldNotExist();
|
|
11
|
+
});
|
package/ui/button.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.button = exports.ButtonModel = void 0;
|
|
4
|
+
const base_model_1 = require("../utils/base-model");
|
|
5
|
+
class ButtonModel extends base_model_1.BaseModel {
|
|
6
|
+
constructor(page, finder) {
|
|
7
|
+
var _a;
|
|
8
|
+
const locator = page.locator("a.uxf-button", { hasText: finder.text }).nth((_a = finder.nth) !== null && _a !== void 0 ? _a : 0);
|
|
9
|
+
super(page, locator);
|
|
10
|
+
this.finder = finder;
|
|
11
|
+
}
|
|
12
|
+
click() {
|
|
13
|
+
return this.locator.click();
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.ButtonModel = ButtonModel;
|
|
17
|
+
const button = (page) => (finder) => new ButtonModel(page, finder);
|
|
18
|
+
exports.button = button;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Page } from "@playwright/test";
|
|
2
|
+
import { FormComponentFinder } from "../utils/base-finder";
|
|
3
|
+
import { FormComponentModel } from "../utils/form-component-model";
|
|
4
|
+
export type CheckboxInputFinder = FormComponentFinder;
|
|
5
|
+
export declare class CheckboxInputModel extends FormComponentModel<boolean> {
|
|
6
|
+
private readonly finder;
|
|
7
|
+
private readonly checkboxLocator;
|
|
8
|
+
private readonly fakeCheckboxLocator;
|
|
9
|
+
constructor(page: Page, finder: FormComponentFinder);
|
|
10
|
+
change(value: boolean): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
export declare const checkboxInput: (page: Page) => (finder: CheckboxInputFinder) => CheckboxInputModel;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
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)("CheckboxInput", async ({ page }) => {
|
|
6
|
+
const ui = (0, components_1.createUi)(page);
|
|
7
|
+
await page.goto("/examples/ui/checkbox-input/Default");
|
|
8
|
+
await ui.checkboxInput({ $name: "default" }).change(true);
|
|
9
|
+
await ui.checkboxInput({ $name: "default" }).change(false);
|
|
10
|
+
await ui.checkboxInput({ $name: "default" }).change(true);
|
|
11
|
+
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkboxInput = exports.CheckboxInputModel = void 0;
|
|
4
|
+
const form_component_model_1 = require("../utils/form-component-model");
|
|
5
|
+
class CheckboxInputModel extends form_component_model_1.FormComponentModel {
|
|
6
|
+
constructor(page, finder) {
|
|
7
|
+
const locator = page.locator(`.uxf-checkbox-input__wrapper[data-name=${finder.$name}]`);
|
|
8
|
+
super(page, locator);
|
|
9
|
+
this.finder = finder;
|
|
10
|
+
this.checkboxLocator = this.locator.locator("input[type=checkbox]");
|
|
11
|
+
this.fakeCheckboxLocator = this.locator.locator(".uxf-checkbox");
|
|
12
|
+
}
|
|
13
|
+
async change(value) {
|
|
14
|
+
if (value !== (await this.fakeCheckboxLocator.evaluate((el) => el.classList.contains("is-selected")))) {
|
|
15
|
+
await this.locator.click();
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.CheckboxInputModel = CheckboxInputModel;
|
|
20
|
+
const checkboxInput = (page) => (finder) => new CheckboxInputModel(page, finder);
|
|
21
|
+
exports.checkboxInput = checkboxInput;
|
package/ui/combobox.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Page } from "@playwright/test";
|
|
2
|
+
import { FormComponentFinder } from "../utils/base-finder";
|
|
3
|
+
import { FormComponentModel } from "../utils/form-component-model";
|
|
4
|
+
export type ComboboxFinder = FormComponentFinder;
|
|
5
|
+
export declare class ComboboxModel extends FormComponentModel<string> {
|
|
6
|
+
private readonly finder;
|
|
7
|
+
private readonly inputLocator;
|
|
8
|
+
constructor(page: Page, finder: FormComponentFinder);
|
|
9
|
+
change(value: string): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export declare const combobox: (page: Page) => (finder: ComboboxFinder) => ComboboxModel;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
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)("Combobox Synchronous", async ({ page }) => {
|
|
6
|
+
const ui = (0, components_1.createUi)(page);
|
|
7
|
+
await page.goto("/examples/ui/combobox/SynchronousOptions");
|
|
8
|
+
await ui.combobox({ $name: "default" }).change("Option one");
|
|
9
|
+
await ui.combobox({ $name: "default" }).change("Option three");
|
|
10
|
+
});
|
package/ui/combobox.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.combobox = exports.ComboboxModel = void 0;
|
|
4
|
+
const form_component_model_1 = require("../utils/form-component-model");
|
|
5
|
+
class ComboboxModel extends form_component_model_1.FormComponentModel {
|
|
6
|
+
constructor(page, finder) {
|
|
7
|
+
const locator = page.locator(`.uxf-combobox[data-name=${finder.$name}]`);
|
|
8
|
+
super(page, locator);
|
|
9
|
+
this.finder = finder;
|
|
10
|
+
this.inputLocator = this.locator.locator(".uxf-input__element");
|
|
11
|
+
}
|
|
12
|
+
async change(value) {
|
|
13
|
+
await this.inputLocator.fill(value);
|
|
14
|
+
await this.page.locator("li.uxf-dropdown__item").filter({ hasText: value }).first().click();
|
|
15
|
+
await this.page.locator("body").click();
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.ComboboxModel = ComboboxModel;
|
|
19
|
+
const combobox = (page) => (finder) => new ComboboxModel(page, finder);
|
|
20
|
+
exports.combobox = combobox;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Page } from "@playwright/test";
|
|
2
|
+
import { FormComponentFinder } from "../utils/base-finder";
|
|
3
|
+
import { FormComponentModel } from "../utils/form-component-model";
|
|
4
|
+
export type DatePickerInputFinder = FormComponentFinder;
|
|
5
|
+
export declare class DatePickerInputModel extends FormComponentModel<Date> {
|
|
6
|
+
private readonly finder;
|
|
7
|
+
private readonly inputLocator;
|
|
8
|
+
constructor(page: Page, finder: FormComponentFinder);
|
|
9
|
+
change(value: Date): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export declare const datePickerInput: (page: Page) => (finder: DatePickerInputFinder) => DatePickerInputModel;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const test_1 = require("@playwright/test");
|
|
7
|
+
const dayjs_1 = __importDefault(require("dayjs"));
|
|
8
|
+
const components_1 = require("../components");
|
|
9
|
+
(0, test_1.test)("DatePickerInput", async ({ page }) => {
|
|
10
|
+
const ui = (0, components_1.createUi)(page);
|
|
11
|
+
await page.goto("/examples/ui/date-picker-input/Default");
|
|
12
|
+
await ui.datePickerInput({ $name: "default" }).change((0, dayjs_1.default)("2025-10-05").toDate());
|
|
13
|
+
});
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.datePickerInput = exports.DatePickerInputModel = void 0;
|
|
7
|
+
const dayjs_1 = __importDefault(require("dayjs"));
|
|
8
|
+
const form_component_model_1 = require("../utils/form-component-model");
|
|
9
|
+
class DatePickerInputModel extends form_component_model_1.FormComponentModel {
|
|
10
|
+
constructor(page, finder) {
|
|
11
|
+
const locator = page.locator(`.uxf-date-picker-input[data-name=${finder.$name}]`);
|
|
12
|
+
super(page, locator);
|
|
13
|
+
this.finder = finder;
|
|
14
|
+
this.inputLocator = this.locator.locator(".uxf-input__element");
|
|
15
|
+
}
|
|
16
|
+
async change(value) {
|
|
17
|
+
const datetimeValue = (0, dayjs_1.default)(value).format("DD.MM.YYYY");
|
|
18
|
+
await this.inputLocator.fill(datetimeValue);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.DatePickerInputModel = DatePickerInputModel;
|
|
22
|
+
const datePickerInput = (page) => (finder) => new DatePickerInputModel(page, finder);
|
|
23
|
+
exports.datePickerInput = datePickerInput;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Page } from "@playwright/test";
|
|
2
|
+
import { FormComponentFinder } from "../utils/base-finder";
|
|
3
|
+
import { FormComponentModel } from "../utils/form-component-model";
|
|
4
|
+
export type DatetimePickerInputFinder = FormComponentFinder;
|
|
5
|
+
export declare class DatetimePickerInputModel extends FormComponentModel<Date> {
|
|
6
|
+
private readonly finder;
|
|
7
|
+
private readonly inputLocator;
|
|
8
|
+
constructor(page: Page, finder: FormComponentFinder);
|
|
9
|
+
change(value: Date): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export declare const datetimePickerInput: (page: Page) => (finder: DatetimePickerInputFinder) => DatetimePickerInputModel;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const test_1 = require("@playwright/test");
|
|
7
|
+
const dayjs_1 = __importDefault(require("dayjs"));
|
|
8
|
+
const components_1 = require("../components");
|
|
9
|
+
(0, test_1.test)("DatetimePickerInput", async ({ page }) => {
|
|
10
|
+
const ui = (0, components_1.createUi)(page);
|
|
11
|
+
await page.goto("/examples/ui/datetime-picker-input/Default");
|
|
12
|
+
await ui.datetimePickerInput({ $name: "default" }).change((0, dayjs_1.default)("2025-10-05").toDate());
|
|
13
|
+
});
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.datetimePickerInput = exports.DatetimePickerInputModel = void 0;
|
|
7
|
+
const dayjs_1 = __importDefault(require("dayjs"));
|
|
8
|
+
const form_component_model_1 = require("../utils/form-component-model");
|
|
9
|
+
class DatetimePickerInputModel extends form_component_model_1.FormComponentModel {
|
|
10
|
+
constructor(page, finder) {
|
|
11
|
+
const locator = page.locator(`.uxf-date-time-picker-input[data-name=${finder.$name}]`);
|
|
12
|
+
super(page, locator);
|
|
13
|
+
this.finder = finder;
|
|
14
|
+
this.inputLocator = this.locator.locator(".uxf-input__element");
|
|
15
|
+
}
|
|
16
|
+
async change(value) {
|
|
17
|
+
const datetimeValue = (0, dayjs_1.default)(value).format("DD.MM.YYYY HH:mm:ss");
|
|
18
|
+
await this.inputLocator.fill(datetimeValue);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.DatetimePickerInputModel = DatetimePickerInputModel;
|
|
22
|
+
const datetimePickerInput = (page) => (finder) => new DatetimePickerInputModel(page, finder);
|
|
23
|
+
exports.datetimePickerInput = datetimePickerInput;
|
package/ui/dropzone.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Page } from "@playwright/test";
|
|
2
|
+
import { FormComponentFinder } from "../utils/base-finder";
|
|
3
|
+
import { FormComponentModel } from "../utils/form-component-model";
|
|
4
|
+
export type DropzoneFinder = FormComponentFinder;
|
|
5
|
+
export declare class DropzoneModel extends FormComponentModel<string[]> {
|
|
6
|
+
private readonly finder;
|
|
7
|
+
private readonly inputLocator;
|
|
8
|
+
constructor(page: Page, finder: FormComponentFinder);
|
|
9
|
+
change(filesToUpload: string[]): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export declare const dropzone: (page: Page) => (finder: DropzoneFinder) => DropzoneModel;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const test_1 = require("@playwright/test");
|
|
27
|
+
const path = __importStar(require("node:path"));
|
|
28
|
+
const components_1 = require("../components");
|
|
29
|
+
(0, test_1.test)("Dropzone", async ({ page }) => {
|
|
30
|
+
const ui = (0, components_1.createUi)(page);
|
|
31
|
+
await page.goto("/examples/ui/dropzone/Default");
|
|
32
|
+
await ui
|
|
33
|
+
.dropzone({ $name: "default" })
|
|
34
|
+
.change([path.join(__dirname, "..", "assets", "fan.png"), path.join(__dirname, "..", "assets", "fan.png")]);
|
|
35
|
+
});
|
package/ui/dropzone.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.dropzone = exports.DropzoneModel = void 0;
|
|
4
|
+
const test_1 = require("@playwright/test");
|
|
5
|
+
const form_component_model_1 = require("../utils/form-component-model");
|
|
6
|
+
class DropzoneModel extends form_component_model_1.FormComponentModel {
|
|
7
|
+
constructor(page, finder) {
|
|
8
|
+
const locator = page.locator(`.uxf-dropzone[data-name=${finder.$name}]`);
|
|
9
|
+
super(page, locator);
|
|
10
|
+
this.finder = finder;
|
|
11
|
+
this.inputLocator = locator.locator("input");
|
|
12
|
+
}
|
|
13
|
+
async change(filesToUpload) {
|
|
14
|
+
await this.inputLocator.setInputFiles(filesToUpload);
|
|
15
|
+
await (0, test_1.expect)(this.locator).toHaveAttribute("data-state", "OK");
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.DropzoneModel = DropzoneModel;
|
|
19
|
+
const dropzone = (page) => (finder) => new DropzoneModel(page, finder);
|
|
20
|
+
exports.dropzone = dropzone;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Page } from "@playwright/test";
|
|
2
|
+
import { FormComponentFinder } from "../utils/base-finder";
|
|
3
|
+
import { FormComponentModel } from "../utils/form-component-model";
|
|
4
|
+
export type MultiComboboxFinder = FormComponentFinder;
|
|
5
|
+
export declare class MultiComboboxModel extends FormComponentModel<string[]> {
|
|
6
|
+
private readonly finder;
|
|
7
|
+
private readonly buttonLocator;
|
|
8
|
+
private readonly inputLocator;
|
|
9
|
+
constructor(page: Page, finder: FormComponentFinder);
|
|
10
|
+
change(value: string[]): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
export declare const multiCombobox: (page: Page) => (finder: MultiComboboxFinder) => MultiComboboxModel;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
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)("MultiSelect", async ({ page }) => {
|
|
6
|
+
const ui = (0, components_1.createUi)(page);
|
|
7
|
+
await page.goto("/examples/ui/multi-combobox/Default");
|
|
8
|
+
await ui.multiCombobox({ $name: "default" }).change(["Option red", "Option green"]);
|
|
9
|
+
});
|
|
10
|
+
(0, test_1.test)("MultiSelect Async", async ({ page }) => {
|
|
11
|
+
const ui = (0, components_1.createUi)(page);
|
|
12
|
+
await page.goto("/examples/ui/multi-combobox/Async");
|
|
13
|
+
await ui.multiCombobox({ $name: "async" }).change(["Option ten", "Option twelve"]);
|
|
14
|
+
});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.multiCombobox = exports.MultiComboboxModel = void 0;
|
|
4
|
+
const form_component_model_1 = require("../utils/form-component-model");
|
|
5
|
+
class MultiComboboxModel extends form_component_model_1.FormComponentModel {
|
|
6
|
+
constructor(page, finder) {
|
|
7
|
+
const locator = page.locator(`.uxf-multi-combobox[data-name=${finder.$name}]`);
|
|
8
|
+
super(page, locator);
|
|
9
|
+
this.finder = finder;
|
|
10
|
+
this.buttonLocator = this.locator.locator(".uxf-multi-combobox__button");
|
|
11
|
+
this.inputLocator = this.locator.locator("input");
|
|
12
|
+
}
|
|
13
|
+
async change(value) {
|
|
14
|
+
await this.buttonLocator.click();
|
|
15
|
+
for (const optionText of value) {
|
|
16
|
+
/* eslint-disable no-await-in-loop */
|
|
17
|
+
await this.inputLocator.fill(optionText);
|
|
18
|
+
await this.page.locator(".uxf-dropdown__item").getByText(optionText).click();
|
|
19
|
+
/* eslint-enable no-await-in-loop */
|
|
20
|
+
}
|
|
21
|
+
await this.buttonLocator.click();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.MultiComboboxModel = MultiComboboxModel;
|
|
25
|
+
const multiCombobox = (page) => (finder) => new MultiComboboxModel(page, finder);
|
|
26
|
+
exports.multiCombobox = multiCombobox;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Page } from "@playwright/test";
|
|
2
|
+
import { FormComponentFinder } from "../utils/base-finder";
|
|
3
|
+
import { FormComponentModel } from "../utils/form-component-model";
|
|
4
|
+
export type MultiSelectFinder = FormComponentFinder;
|
|
5
|
+
export declare class MultiSelectModel extends FormComponentModel<string[]> {
|
|
6
|
+
private readonly finder;
|
|
7
|
+
private readonly buttonLocator;
|
|
8
|
+
constructor(page: Page, finder: FormComponentFinder);
|
|
9
|
+
change(optionTexts: string[]): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export declare const multiSelect: (page: Page) => (finder: MultiSelectFinder) => MultiSelectModel;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
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)("MultiSelect", async ({ page }) => {
|
|
6
|
+
const ui = (0, components_1.createUi)(page);
|
|
7
|
+
await page.goto("/examples/ui/multi-select/Default");
|
|
8
|
+
await ui.multiSelect({ $name: "default" }).change(["Option red", "Option green"]);
|
|
9
|
+
});
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.multiSelect = exports.MultiSelectModel = void 0;
|
|
4
|
+
const form_component_model_1 = require("../utils/form-component-model");
|
|
5
|
+
class MultiSelectModel extends form_component_model_1.FormComponentModel {
|
|
6
|
+
constructor(page, finder) {
|
|
7
|
+
const locator = page.locator(`.uxf-multi-select[data-name=${finder.$name}]`);
|
|
8
|
+
super(page, locator);
|
|
9
|
+
this.finder = finder;
|
|
10
|
+
this.buttonLocator = this.locator.locator(".uxf-multi-select__button");
|
|
11
|
+
}
|
|
12
|
+
// TODO implementovat odebrání předchozích hodnot (ideálně nějak kliknout na clear tlačítko)
|
|
13
|
+
async change(optionTexts) {
|
|
14
|
+
await this.buttonLocator.click();
|
|
15
|
+
for (const optionText of optionTexts) {
|
|
16
|
+
// eslint-disable-next-line no-await-in-loop
|
|
17
|
+
await this.page.locator(".uxf-dropdown__item").filter({ hasText: optionText }).click();
|
|
18
|
+
}
|
|
19
|
+
await this.buttonLocator.click();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.MultiSelectModel = MultiSelectModel;
|
|
23
|
+
const multiSelect = (page) => (finder) => new MultiSelectModel(page, finder);
|
|
24
|
+
exports.multiSelect = multiSelect;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Page } from "@playwright/test";
|
|
2
|
+
import { FormComponentFinder } from "../utils/base-finder";
|
|
3
|
+
import { FormComponentModel } from "../utils/form-component-model";
|
|
4
|
+
export type RadioGroupFinder = FormComponentFinder;
|
|
5
|
+
export declare class RadioGroupModel extends FormComponentModel<string> {
|
|
6
|
+
private readonly finder;
|
|
7
|
+
constructor(page: Page, finder: FormComponentFinder);
|
|
8
|
+
change(value: string): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare const radioGroup: (page: Page) => (finder: RadioGroupFinder) => RadioGroupModel;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
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)("RadioGroup", async ({ page }) => {
|
|
6
|
+
const ui = (0, components_1.createUi)(page);
|
|
7
|
+
await page.goto("/examples/ui/radio-group/Default");
|
|
8
|
+
await ui.radioGroup({ $name: "radio-group" }).change("Radio two");
|
|
9
|
+
await ui.radioGroup({ $name: "radio-group" }).change("Radio three");
|
|
10
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.radioGroup = exports.RadioGroupModel = void 0;
|
|
4
|
+
const form_component_model_1 = require("../utils/form-component-model");
|
|
5
|
+
class RadioGroupModel extends form_component_model_1.FormComponentModel {
|
|
6
|
+
constructor(page, finder) {
|
|
7
|
+
const locator = page.locator(`.uxf-radio-group[data-name=${finder.$name}]`);
|
|
8
|
+
super(page, locator);
|
|
9
|
+
this.finder = finder;
|
|
10
|
+
}
|
|
11
|
+
async change(value) {
|
|
12
|
+
const option = this.locator.locator(".uxf-radio-group__option").filter({ hasText: value });
|
|
13
|
+
await option.click();
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.RadioGroupModel = RadioGroupModel;
|
|
17
|
+
const radioGroup = (page) => (finder) => new RadioGroupModel(page, finder);
|
|
18
|
+
exports.radioGroup = radioGroup;
|
package/ui/select.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Page } from "@playwright/test";
|
|
2
|
+
import { FormComponentFinder } from "../utils/base-finder";
|
|
3
|
+
import { FormComponentModel } from "../utils/form-component-model";
|
|
4
|
+
export type SelectFinder = FormComponentFinder;
|
|
5
|
+
export declare class SelectModel extends FormComponentModel<string> {
|
|
6
|
+
private readonly finder;
|
|
7
|
+
private readonly buttonLocator;
|
|
8
|
+
constructor(page: Page, finder: FormComponentFinder);
|
|
9
|
+
change(optionText: string): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export declare const select: (page: Page) => (finder: SelectFinder) => SelectModel;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/ui/select.e2e.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
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)("Select", async ({ page }) => {
|
|
6
|
+
const ui = (0, components_1.createUi)(page);
|
|
7
|
+
await page.goto("/examples/ui/select/Default");
|
|
8
|
+
await ui.select({ $name: "select" }).change("Option six");
|
|
9
|
+
await ui.select({ $name: "select" }).change("Option nine");
|
|
10
|
+
});
|
package/ui/select.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.select = exports.SelectModel = void 0;
|
|
4
|
+
const form_component_model_1 = require("../utils/form-component-model");
|
|
5
|
+
class SelectModel extends form_component_model_1.FormComponentModel {
|
|
6
|
+
constructor(page, finder) {
|
|
7
|
+
const locator = page.locator(`.uxf-select[data-name=${finder.$name}]`);
|
|
8
|
+
super(page, locator);
|
|
9
|
+
this.finder = finder;
|
|
10
|
+
this.buttonLocator = this.locator.locator("div.uxf-input__element");
|
|
11
|
+
}
|
|
12
|
+
async change(optionText) {
|
|
13
|
+
await this.buttonLocator.click();
|
|
14
|
+
await this.page.locator(".uxf-dropdown__item").filter({ hasText: optionText }).click();
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.SelectModel = SelectModel;
|
|
18
|
+
const select = (page) => (finder) => new SelectModel(page, finder);
|
|
19
|
+
exports.select = select;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Page } from "@playwright/test";
|
|
2
|
+
import { FormComponentFinder } from "../utils/base-finder";
|
|
3
|
+
import { FormComponentModel } from "../utils/form-component-model";
|
|
4
|
+
export type TextInputFinder = FormComponentFinder;
|
|
5
|
+
export declare class TextInputModel extends FormComponentModel<string> {
|
|
6
|
+
private readonly finder;
|
|
7
|
+
constructor(page: Page, finder: FormComponentFinder);
|
|
8
|
+
change(value: string): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare const textInput: (page: Page) => (finder: TextInputFinder) => TextInputModel;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
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)("TextInput", async ({ page }) => {
|
|
6
|
+
const ui = (0, components_1.createUi)(page);
|
|
7
|
+
await page.goto("/examples/ui/text-input/Default");
|
|
8
|
+
await ui.textInput({ $name: "default" }).change("Value");
|
|
9
|
+
});
|
package/ui/text-input.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.textInput = exports.TextInputModel = void 0;
|
|
4
|
+
const form_component_model_1 = require("../utils/form-component-model");
|
|
5
|
+
class TextInputModel extends form_component_model_1.FormComponentModel {
|
|
6
|
+
constructor(page, finder) {
|
|
7
|
+
const locator = page.locator(`.uxf-text-input[data-name=${finder.$name}]`);
|
|
8
|
+
super(page, locator);
|
|
9
|
+
this.finder = finder;
|
|
10
|
+
}
|
|
11
|
+
async change(value) {
|
|
12
|
+
await this.locator.locator("input").fill(value);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.TextInputModel = TextInputModel;
|
|
16
|
+
const textInput = (page) => (finder) => new TextInputModel(page, finder);
|
|
17
|
+
exports.textInput = textInput;
|
package/ui/textarea.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Page } from "@playwright/test";
|
|
2
|
+
import { FormComponentFinder } from "../utils/base-finder";
|
|
3
|
+
import { FormComponentModel } from "../utils/form-component-model";
|
|
4
|
+
export type TextareaFinder = FormComponentFinder;
|
|
5
|
+
export declare class TextareaModel extends FormComponentModel<string> {
|
|
6
|
+
private readonly finder;
|
|
7
|
+
constructor(page: Page, finder: FormComponentFinder);
|
|
8
|
+
change(value: string): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare const textarea: (page: Page) => (finder: TextareaFinder) => TextareaModel;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
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)("Textarea", async ({ page }) => {
|
|
6
|
+
const ui = (0, components_1.createUi)(page);
|
|
7
|
+
await page.goto("/examples/ui/textarea/Default");
|
|
8
|
+
await ui.textarea({ $name: "text-area" }).change("Value");
|
|
9
|
+
});
|
package/ui/textarea.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.textarea = exports.TextareaModel = void 0;
|
|
4
|
+
const form_component_model_1 = require("../utils/form-component-model");
|
|
5
|
+
class TextareaModel extends form_component_model_1.FormComponentModel {
|
|
6
|
+
constructor(page, finder) {
|
|
7
|
+
const locator = page.locator(`.uxf-textarea[data-name=${finder.$name}]`);
|
|
8
|
+
super(page, locator);
|
|
9
|
+
this.finder = finder;
|
|
10
|
+
}
|
|
11
|
+
async change(value) {
|
|
12
|
+
const textarea = this.locator.locator("textarea");
|
|
13
|
+
await textarea.fill(value);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.TextareaModel = TextareaModel;
|
|
17
|
+
const textarea = (page) => (finder) => new TextareaModel(page, finder);
|
|
18
|
+
exports.textarea = textarea;
|
package/ui/toggle.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Page } from "@playwright/test";
|
|
2
|
+
import { FormComponentFinder } from "../utils/base-finder";
|
|
3
|
+
import { FormComponentModel } from "../utils/form-component-model";
|
|
4
|
+
export type ToggleFinder = FormComponentFinder;
|
|
5
|
+
export declare class ToggleModel extends FormComponentModel<boolean> {
|
|
6
|
+
private readonly finder;
|
|
7
|
+
constructor(page: Page, finder: FormComponentFinder);
|
|
8
|
+
change(value: boolean): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare const toggle: (page: Page) => (finder: ToggleFinder) => ToggleModel;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/ui/toggle.e2e.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
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)("Toggle", async ({ page }) => {
|
|
6
|
+
const ui = (0, components_1.createUi)(page);
|
|
7
|
+
await page.goto("/examples/ui/toggle/Default");
|
|
8
|
+
await ui.toggle({ $name: "toggle-default" }).change(true);
|
|
9
|
+
await ui.toggle({ $name: "toggle-default" }).change(false);
|
|
10
|
+
await ui.toggle({ $name: "toggle-default" }).change(true);
|
|
11
|
+
});
|
package/ui/toggle.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toggle = exports.ToggleModel = void 0;
|
|
4
|
+
const form_component_model_1 = require("../utils/form-component-model");
|
|
5
|
+
class ToggleModel extends form_component_model_1.FormComponentModel {
|
|
6
|
+
constructor(page, finder) {
|
|
7
|
+
const locator = page.locator(`.uxf-toggle__wrapper[data-name=${finder.$name}]`);
|
|
8
|
+
super(page, locator);
|
|
9
|
+
this.finder = finder;
|
|
10
|
+
}
|
|
11
|
+
async change(value) {
|
|
12
|
+
const isSelected = await this.locator.locator("button").evaluate((el) => el.classList.contains("is-selected"));
|
|
13
|
+
if (value !== isSelected) {
|
|
14
|
+
return this.locator.locator("button").click();
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.ToggleModel = ToggleModel;
|
|
19
|
+
const toggle = (page) => (finder) => new ToggleModel(page, finder);
|
|
20
|
+
exports.toggle = toggle;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Locator, Page } from "@playwright/test";
|
|
2
|
+
export declare abstract class BaseModel {
|
|
3
|
+
protected readonly page: Page;
|
|
4
|
+
protected readonly locator: Locator;
|
|
5
|
+
protected constructor(page: Page, locator: Locator);
|
|
6
|
+
shouldExist(): Promise<void>;
|
|
7
|
+
shouldNotExist(): Promise<void>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseModel = void 0;
|
|
4
|
+
const test_1 = require("@playwright/test");
|
|
5
|
+
class BaseModel {
|
|
6
|
+
constructor(page, locator) {
|
|
7
|
+
this.page = page;
|
|
8
|
+
this.locator = locator;
|
|
9
|
+
}
|
|
10
|
+
async shouldExist() {
|
|
11
|
+
await (0, test_1.expect)(this.locator).toBeVisible();
|
|
12
|
+
}
|
|
13
|
+
async shouldNotExist() {
|
|
14
|
+
await (0, test_1.expect)(this.locator).not.toBeVisible();
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.BaseModel = BaseModel;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Locator, Page } from "@playwright/test";
|
|
2
|
+
import { BaseModel } from "./base-model";
|
|
3
|
+
export declare abstract class FormComponentModel<Value> extends BaseModel {
|
|
4
|
+
protected constructor(page: Page, locator: Locator);
|
|
5
|
+
abstract change(value: Value): Promise<any>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FormComponentModel = void 0;
|
|
4
|
+
const base_model_1 = require("./base-model");
|
|
5
|
+
class FormComponentModel extends base_model_1.BaseModel {
|
|
6
|
+
constructor(page, locator) {
|
|
7
|
+
super(page, locator);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.FormComponentModel = FormComponentModel;
|