@smartbit4all/playwright-qa 0.1.7 → 0.1.8

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 CHANGED
@@ -134,6 +134,59 @@ The package ships reusable TestSteps for common smartbit4all UI patterns (grid,
134
134
  import { selectGridRow, navigateInTree } from '@smartbit4all/playwright-qa/steps';
135
135
  ```
136
136
 
137
+ ### Forms
138
+
139
+ ```typescript
140
+ import {
141
+ fillField, fillDate, fillDateTime,
142
+ selectOption, selectMultiple, selectRadio,
143
+ setCheckbox, setCheckboxGroup, setToggle,
144
+ addChip, removeChip, setChips,
145
+ uploadFile,
146
+ } from '@smartbit4all/playwright-qa/steps';
147
+
148
+ // Fill a text input or textarea — by data-testid (preferred) or label text (fallback)
149
+ await fillField(dialog, 'data.name', 'Teszt mappa'); // data-testid
150
+ await fillField(page, 'dossierContentData.name', 'Teszt dosszié'); // data-testid
151
+ await fillField(page, 'Megjegyzés', 'Ez egy megjegyzés'); // label fallback
152
+
153
+ // Date picker (ISO format YYYY-MM-DD)
154
+ await fillDate(dialog, 'dataSheet.startDate', '2026-04-15');
155
+
156
+ // Date-time picker (date + time)
157
+ await fillDateTime(dialog, 'data.deadline', '2026-04-15', '14:30');
158
+
159
+ // Select from a dropdown (mat-select / p-dropdown) — by data-testid or label
160
+ await selectOption(page, 'selectedDocumentTypeCategory', 'Ügyintézés'); // data-testid
161
+ await selectOption(dialog, 'Kategória', 'Ügyintézés'); // label fallback
162
+
163
+ // Multi-select dropdown
164
+ await selectMultiple(dialog, 'data.skills', ['Angular', 'React', 'Vue']);
165
+
166
+ // Select a radio button — by data-testid on the radio group or label
167
+ await selectRadio(dialog, 'data.canIncludeFiles', 'Nem'); // data-testid
168
+ await selectRadio(dialog, 'Tartalmazhat almappákat', 'Igen'); // label fallback
169
+
170
+ // Set a checkbox — by data-testid or label
171
+ await setCheckbox(dialog, 'Aktív', true);
172
+
173
+ // Checkbox group (CHECK_BOX_2) — set multiple checkboxes at once
174
+ await setCheckboxGroup(dialog, 'permissions', { 'Olvasás': true, 'Írás': true, 'Törlés': false });
175
+
176
+ // Toggle switch
177
+ await setToggle(dialog, 'data.isActive', true);
178
+
179
+ // Chips — add, remove, or set declaratively
180
+ await addChip(dialog, 'data.tags', 'urgent');
181
+ await removeChip(dialog, 'data.tags', 'draft');
182
+ await setChips(dialog, 'data.tags', ['urgent', 'review']);
183
+
184
+ // File upload
185
+ await uploadFile(dialog, 'data.attachment', '/path/to/file.pdf');
186
+ ```
187
+
188
+ All form utilities accept a `data-testid` value or a visible label text as identifier. When a `data-testid` match is found on the element, it takes priority; otherwise the function falls back to label text matching (`.smart-form-widget-label`, `h3`, `h4`, or `label`). They work with both Angular Material and PrimeNG components, and accept any `Locator` or `Page` as container — use `topDialog(page)` to scope to a dialog.
189
+
137
190
  ### Grid
138
191
 
139
192
  ```typescript
@@ -0,0 +1,69 @@
1
+ import type { Page, Locator } from '@playwright/test';
2
+ /**
3
+ * Fills a text input or textarea identified by data-testid or label text.
4
+ */
5
+ export declare function fillField(container: Locator | Page, identifier: string, value: string): Promise<void>;
6
+ /**
7
+ * Fills a date picker input with an ISO date string (YYYY-MM-DD).
8
+ * Identifier can be a data-testid or a label text.
9
+ */
10
+ export declare function fillDate(container: Locator | Page, identifier: string, date: string): Promise<void>;
11
+ /**
12
+ * Fills a date-time picker with date (YYYY-MM-DD) and time (HH:mm).
13
+ * PrimeNG: single input with combined value. Material: two separate inputs.
14
+ * Identifier can be a data-testid or a label text.
15
+ */
16
+ export declare function fillDateTime(container: Locator | Page, identifier: string, date: string, time: string): Promise<void>;
17
+ /**
18
+ * Selects an option from a dropdown (Angular Material mat-select or PrimeNG p-dropdown).
19
+ * Identifier can be a data-testid or a label text.
20
+ */
21
+ export declare function selectOption(container: Locator | Page, identifier: string, optionText: string): Promise<void>;
22
+ /**
23
+ * Selects multiple options from a multi-select dropdown.
24
+ * Identifier can be a data-testid or a label text.
25
+ */
26
+ export declare function selectMultiple(container: Locator | Page, identifier: string, options: string[]): Promise<void>;
27
+ /**
28
+ * Selects a radio button inside a radio group identified by data-testid or label text.
29
+ */
30
+ export declare function selectRadio(container: Locator | Page, identifier: string, value: string): Promise<void>;
31
+ /**
32
+ * Sets a checkbox to the desired state (checked/unchecked).
33
+ * Identifier can be a data-testid or a label text.
34
+ */
35
+ export declare function setCheckbox(container: Locator | Page, identifier: string, checked: boolean): Promise<void>;
36
+ /**
37
+ * Sets multiple checkboxes in a checkbox group (CHECK_BOX_2 widget).
38
+ * Identifier can be a data-testid or a label text.
39
+ * Selections is a map of checkbox label to desired state.
40
+ * Checkboxes not mentioned in selections are left unchanged.
41
+ */
42
+ export declare function setCheckboxGroup(container: Locator | Page, identifier: string, selections: Record<string, boolean>): Promise<void>;
43
+ /**
44
+ * Sets a toggle switch to the desired state.
45
+ * Identifier can be a data-testid or a label text.
46
+ */
47
+ export declare function setToggle(container: Locator | Page, identifier: string, on: boolean): Promise<void>;
48
+ /**
49
+ * Adds a chip to a chip input field.
50
+ * Identifier can be a data-testid or a label text.
51
+ */
52
+ export declare function addChip(container: Locator | Page, identifier: string, value: string): Promise<void>;
53
+ /**
54
+ * Removes a chip from a chip input field by its displayed text.
55
+ * Identifier can be a data-testid or a label text.
56
+ */
57
+ export declare function removeChip(container: Locator | Page, identifier: string, value: string): Promise<void>;
58
+ /**
59
+ * Sets the chips to the desired list of values.
60
+ * Removes chips not in the list, adds missing ones.
61
+ * Identifier can be a data-testid or a label text.
62
+ */
63
+ export declare function setChips(container: Locator | Page, identifier: string, values: string[]): Promise<void>;
64
+ /**
65
+ * Uploads a file to a file uploader widget.
66
+ * Identifier can be a data-testid or a label text.
67
+ */
68
+ export declare function uploadFile(container: Locator | Page, identifier: string, filePath: string): Promise<void>;
69
+ //# sourceMappingURL=forms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forms.d.ts","sourceRoot":"","sources":["../../src/steps/forms.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AA8DtD;;GAEG;AACH,wBAAsB,SAAS,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG3G;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGzG;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB3H;AAID;;;GAGG;AACH,wBAAsB,YAAY,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBnH;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBpH;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB7G;AAID;;;GAGG;AACH,wBAAsB,WAAW,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAchH;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBxI;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAczG;AAID;;;GAGG;AACH,wBAAsB,OAAO,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIzG;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5G;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B7G;AAID;;;GAGG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS/G"}
@@ -0,0 +1,298 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fillField = fillField;
4
+ exports.fillDate = fillDate;
5
+ exports.fillDateTime = fillDateTime;
6
+ exports.selectOption = selectOption;
7
+ exports.selectMultiple = selectMultiple;
8
+ exports.selectRadio = selectRadio;
9
+ exports.setCheckbox = setCheckbox;
10
+ exports.setCheckboxGroup = setCheckboxGroup;
11
+ exports.setToggle = setToggle;
12
+ exports.addChip = addChip;
13
+ exports.removeChip = removeChip;
14
+ exports.setChips = setChips;
15
+ exports.uploadFile = uploadFile;
16
+ /**
17
+ * Resolves a form widget container by data-testid or label text.
18
+ * If identifier matches a data-testid on a widget container or radio group, uses that.
19
+ * Otherwise falls back to label text matching.
20
+ */
21
+ function widgetByLabel(container, label) {
22
+ const page = getPage(container);
23
+ // First try: smartbit4all widget with .smart-form-widget-label class
24
+ const bySmartLabel = container.locator('.widgetContainer', {
25
+ has: page.locator(`.smart-form-widget-label:has-text("${label}")`),
26
+ }).first();
27
+ // Fallback: generic form field with h4/label
28
+ const byGenericLabel = container.locator('.widgetContainer, .form-field, .mat-mdc-form-field', {
29
+ has: page.locator(`h4:has-text("${label}"), label:has-text("${label}")`),
30
+ }).first();
31
+ return bySmartLabel.or(byGenericLabel).first();
32
+ }
33
+ /**
34
+ * Finds an input/textarea by data-testid first, falling back to label text strategies.
35
+ * Strategies are tried in priority order — first match wins.
36
+ */
37
+ async function resolveInput(container, identifier) {
38
+ const page = getPage(container);
39
+ const inputSelector = 'input:not([type=radio]):not([type=checkbox]):not([type=hidden]), textarea';
40
+ // Strategy 1: data-testid on the input itself
41
+ const byTestId = container.locator(`input[data-testid="${identifier}"], textarea[data-testid="${identifier}"]`).first();
42
+ if (await byTestId.count() > 0)
43
+ return byTestId;
44
+ // Strategy 2: smartform widget with .smart-form-widget-label
45
+ const bySmartLabel = container.locator('.widgetContainer', {
46
+ has: page.locator(`.smart-form-widget-label:has-text("${identifier}")`),
47
+ }).first().locator(inputSelector).first();
48
+ if (await bySmartLabel.count() > 0)
49
+ return bySmartLabel;
50
+ // Strategy 3: aria-label on the input
51
+ const byAriaLabel = container.locator(`input[aria-label*="${identifier}"], textarea[aria-label*="${identifier}"]`).first();
52
+ if (await byAriaLabel.count() > 0)
53
+ return byAriaLabel;
54
+ // Strategy 4: heading sibling containing the input
55
+ const byHeading = container.locator(`h3:has-text("${identifier}"), h4:has-text("${identifier}")`).first()
56
+ .locator('~ smartform, ~ div, ~ mat-form-field').first()
57
+ .locator(inputSelector).first();
58
+ return byHeading;
59
+ }
60
+ /**
61
+ * Finds the mat-chip-grid container for a chip input identified by data-testid or label.
62
+ */
63
+ function findChipGrid(container, identifier) {
64
+ const byTestId = container.locator(`input[data-testid="${identifier}"]`).first()
65
+ .locator('xpath=ancestor::mat-chip-grid');
66
+ const widget = widgetByLabel(container, identifier);
67
+ const byWidget = widget.locator('mat-chip-grid').first();
68
+ return byTestId.or(byWidget).first();
69
+ }
70
+ // --- Text input utilities ---
71
+ /**
72
+ * Fills a text input or textarea identified by data-testid or label text.
73
+ */
74
+ async function fillField(container, identifier, value) {
75
+ const input = await resolveInput(container, identifier);
76
+ await input.fill(value);
77
+ }
78
+ /**
79
+ * Fills a date picker input with an ISO date string (YYYY-MM-DD).
80
+ * Identifier can be a data-testid or a label text.
81
+ */
82
+ async function fillDate(container, identifier, date) {
83
+ const input = await resolveInput(container, identifier);
84
+ await input.fill(date);
85
+ }
86
+ /**
87
+ * Fills a date-time picker with date (YYYY-MM-DD) and time (HH:mm).
88
+ * PrimeNG: single input with combined value. Material: two separate inputs.
89
+ * Identifier can be a data-testid or a label text.
90
+ */
91
+ async function fillDateTime(container, identifier, date, time) {
92
+ const inputSelector = 'input:not([type=radio]):not([type=checkbox]):not([type=hidden])';
93
+ // Try data-testid on p-calendar (single input with showTime)
94
+ const primeCalendar = container.locator(`p-calendar[data-testid="${identifier}"]`).first();
95
+ if (await primeCalendar.count() > 0) {
96
+ const input = primeCalendar.locator('input').first();
97
+ await input.fill(`${date} ${time}`);
98
+ }
99
+ else {
100
+ // Material fallback: two separate inputs in the widget
101
+ const widget = widgetByLabel(container, identifier);
102
+ const inputs = widget.locator(inputSelector);
103
+ const dateInput = inputs.first();
104
+ const timeInput = inputs.nth(1);
105
+ await dateInput.fill(date);
106
+ await timeInput.fill(time);
107
+ }
108
+ }
109
+ // --- Selection utilities ---
110
+ /**
111
+ * Selects an option from a dropdown (Angular Material mat-select or PrimeNG p-dropdown).
112
+ * Identifier can be a data-testid or a label text.
113
+ */
114
+ async function selectOption(container, identifier, optionText) {
115
+ const page = getPage(container);
116
+ // Try data-testid first
117
+ const byTestId = container.locator(`mat-select[data-testid="${identifier}"], p-dropdown[data-testid="${identifier}"]`).first();
118
+ const widget = widgetByLabel(container, identifier);
119
+ const byWidget = widget.locator('mat-select, p-dropdown').first();
120
+ const target = byTestId.or(byWidget).first();
121
+ await target.click();
122
+ // mat-option and p-dropdown-item render in overlay (body level)
123
+ const matOption = page.locator('mat-option', { hasText: optionText });
124
+ const primeOption = page.locator('.p-dropdown-item', { hasText: optionText });
125
+ await matOption.or(primeOption).first().click();
126
+ }
127
+ /**
128
+ * Selects multiple options from a multi-select dropdown.
129
+ * Identifier can be a data-testid or a label text.
130
+ */
131
+ async function selectMultiple(container, identifier, options) {
132
+ const page = getPage(container);
133
+ // Try data-testid first
134
+ const byTestId = container.locator(`mat-select[data-testid="${identifier}"], p-multiSelect[data-testid="${identifier}"]`).first();
135
+ const widget = widgetByLabel(container, identifier);
136
+ const byWidget = widget.locator('mat-select, p-multiSelect').first();
137
+ const target = byTestId.or(byWidget).first();
138
+ await target.click();
139
+ for (const optionText of options) {
140
+ const matOption = page.locator('mat-option', { hasText: optionText });
141
+ const primeOption = page.locator('.p-multiselect-item', { hasText: optionText });
142
+ await matOption.or(primeOption).first().click();
143
+ }
144
+ // Close the dropdown
145
+ await page.keyboard.press('Escape');
146
+ }
147
+ /**
148
+ * Selects a radio button inside a radio group identified by data-testid or label text.
149
+ */
150
+ async function selectRadio(container, identifier, value) {
151
+ // Try data-testid on mat-radio-group / p-radiobutton parent
152
+ const byTestId = container.locator(`mat-radio-group[data-testid="${identifier}"]`).first();
153
+ const widget = widgetByLabel(container, identifier);
154
+ // Angular Material
155
+ const matRadioInTestId = byTestId.locator('mat-radio-button', { hasText: value });
156
+ const matRadioInWidget = widget.locator('mat-radio-button', { hasText: value });
157
+ const matRadio = matRadioInTestId.or(matRadioInWidget).first();
158
+ // PrimeNG
159
+ const primeRadio = widget.locator('p-radiobutton', { hasText: value });
160
+ if (await matRadio.count() > 0) {
161
+ await matRadio.click();
162
+ }
163
+ else if (await primeRadio.count() > 0) {
164
+ await primeRadio.click();
165
+ }
166
+ }
167
+ // --- Toggle & checkbox utilities ---
168
+ /**
169
+ * Sets a checkbox to the desired state (checked/unchecked).
170
+ * Identifier can be a data-testid or a label text.
171
+ */
172
+ async function setCheckbox(container, identifier, checked) {
173
+ const widget = widgetByLabel(container, identifier);
174
+ // Try data-testid first
175
+ const byTestId = container.locator(`mat-checkbox[data-testid="${identifier}"], p-checkbox[data-testid="${identifier}"]`).first();
176
+ const byWidget = widget.locator('mat-checkbox, p-checkbox').first();
177
+ const target = byTestId.or(byWidget).first();
178
+ const input = target.locator('input');
179
+ const isChecked = await input.isChecked();
180
+ if (isChecked !== checked) {
181
+ await target.click();
182
+ }
183
+ }
184
+ /**
185
+ * Sets multiple checkboxes in a checkbox group (CHECK_BOX_2 widget).
186
+ * Identifier can be a data-testid or a label text.
187
+ * Selections is a map of checkbox label to desired state.
188
+ * Checkboxes not mentioned in selections are left unchanged.
189
+ */
190
+ async function setCheckboxGroup(container, identifier, selections) {
191
+ // Try data-testid on wrapper div
192
+ const byTestId = container.locator(`div[data-testid="${identifier}"], .widgetContainer[data-testid="${identifier}"]`).first();
193
+ const widget = widgetByLabel(container, identifier);
194
+ const group = byTestId.or(widget).first();
195
+ for (const [label, desired] of Object.entries(selections)) {
196
+ // Angular Material
197
+ const matCb = group.locator('mat-checkbox', { hasText: label });
198
+ // PrimeNG
199
+ const primeCb = group.locator('p-checkbox', { hasText: label });
200
+ const target = matCb.or(primeCb).first();
201
+ const input = target.locator('input');
202
+ const isChecked = await input.isChecked();
203
+ if (isChecked !== desired) {
204
+ await target.click();
205
+ }
206
+ }
207
+ }
208
+ /**
209
+ * Sets a toggle switch to the desired state.
210
+ * Identifier can be a data-testid or a label text.
211
+ */
212
+ async function setToggle(container, identifier, on) {
213
+ const widget = widgetByLabel(container, identifier);
214
+ // Try data-testid first
215
+ const byTestId = container.locator(`mat-slide-toggle[data-testid="${identifier}"], p-inputSwitch[data-testid="${identifier}"]`).first();
216
+ const byWidget = widget.locator('mat-slide-toggle, p-inputSwitch').first();
217
+ const target = byTestId.or(byWidget).first();
218
+ const input = target.locator('input');
219
+ const isChecked = await input.isChecked();
220
+ if (isChecked !== on) {
221
+ await target.click();
222
+ }
223
+ }
224
+ // --- Chip utilities ---
225
+ /**
226
+ * Adds a chip to a chip input field.
227
+ * Identifier can be a data-testid or a label text.
228
+ */
229
+ async function addChip(container, identifier, value) {
230
+ const input = await resolveInput(container, identifier);
231
+ await input.fill(value);
232
+ await input.press('Enter');
233
+ }
234
+ /**
235
+ * Removes a chip from a chip input field by its displayed text.
236
+ * Identifier can be a data-testid or a label text.
237
+ */
238
+ async function removeChip(container, identifier, value) {
239
+ const chipGrid = findChipGrid(container, identifier);
240
+ const chip = chipGrid.locator('mat-chip-row', { hasText: value });
241
+ await chip.locator('button[matChipRemove]').click();
242
+ }
243
+ /**
244
+ * Sets the chips to the desired list of values.
245
+ * Removes chips not in the list, adds missing ones.
246
+ * Identifier can be a data-testid or a label text.
247
+ */
248
+ async function setChips(container, identifier, values) {
249
+ const chipGrid = findChipGrid(container, identifier);
250
+ // Read current chips
251
+ const chipRows = chipGrid.locator('mat-chip-row');
252
+ const count = await chipRows.count();
253
+ const currentChips = [];
254
+ for (let i = 0; i < count; i++) {
255
+ const text = await chipRows.nth(i).textContent();
256
+ if (text) {
257
+ // Chip text may contain the remove button icon text — strip it
258
+ currentChips.push(text.replace(/cancel/g, '').trim());
259
+ }
260
+ }
261
+ // Remove chips not in desired values
262
+ for (const chip of currentChips) {
263
+ if (!values.includes(chip)) {
264
+ await removeChip(container, identifier, chip);
265
+ }
266
+ }
267
+ // Add chips not yet present
268
+ for (const value of values) {
269
+ if (!currentChips.includes(value)) {
270
+ await addChip(container, identifier, value);
271
+ }
272
+ }
273
+ }
274
+ // --- File upload ---
275
+ /**
276
+ * Uploads a file to a file uploader widget.
277
+ * Identifier can be a data-testid or a label text.
278
+ */
279
+ async function uploadFile(container, identifier, filePath) {
280
+ // Try data-testid on smart-file-editor
281
+ const byTestId = container.locator(`smart-file-editor[data-testid="${identifier}"]`).first();
282
+ const widget = widgetByLabel(container, identifier);
283
+ const byWidget = widget.locator('smart-file-editor').first();
284
+ const editor = byTestId.or(byWidget).first();
285
+ const fileInput = editor.locator('input[type=file]');
286
+ await fileInput.setInputFiles(filePath);
287
+ }
288
+ // --- Internal helpers ---
289
+ /**
290
+ * Extracts the Page from a Locator or Page.
291
+ */
292
+ function getPage(container) {
293
+ if ('page' in container) {
294
+ return container.page();
295
+ }
296
+ return container;
297
+ }
298
+ //# sourceMappingURL=forms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forms.js","sourceRoot":"","sources":["../../src/steps/forms.ts"],"names":[],"mappings":"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"}
@@ -3,4 +3,5 @@ export { selectGridRow, filterAndSelectGridRow, applyGridFilters, clearGridFilte
3
3
  export { navigateToMain, navigateInTree, } from './navigation.steps';
4
4
  export { topDialog, clickInDialog, } from './dialog.steps';
5
5
  export { findButton, findPopupMenu, findMenuItem, } from './locators';
6
+ export { fillField, fillDate, fillDateTime, selectOption, selectMultiple, selectRadio, setCheckbox, setCheckboxGroup, setToggle, addChip, removeChip, setChips, uploadFile, } from './forms';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/steps/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAE5C,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,SAAS,GACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,cAAc,EACd,cAAc,GACf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,SAAS,EACT,aAAa,GACd,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,UAAU,EACV,aAAa,EACb,YAAY,GACb,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/steps/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAE5C,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,SAAS,GACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,cAAc,EACd,cAAc,GACf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,SAAS,EACT,aAAa,GACd,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,UAAU,EACV,aAAa,EACb,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,OAAO,EACP,UAAU,EACV,QAAQ,EACR,UAAU,GACX,MAAM,SAAS,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.findMenuItem = exports.findPopupMenu = exports.findButton = exports.clickInDialog = exports.topDialog = exports.navigateInTree = exports.navigateToMain = exports.clearGridFilters = exports.applyGridFilters = exports.filterAndSelectGridRow = exports.selectGridRow = exports.waitForAngularIdle = void 0;
3
+ exports.uploadFile = exports.setChips = exports.removeChip = exports.addChip = exports.setToggle = exports.setCheckboxGroup = exports.setCheckbox = exports.selectRadio = exports.selectMultiple = exports.selectOption = exports.fillDateTime = exports.fillDate = exports.fillField = exports.findMenuItem = exports.findPopupMenu = exports.findButton = exports.clickInDialog = exports.topDialog = exports.navigateInTree = exports.navigateToMain = exports.clearGridFilters = exports.applyGridFilters = exports.filterAndSelectGridRow = exports.selectGridRow = exports.waitForAngularIdle = void 0;
4
4
  var wait_1 = require("./wait");
5
5
  Object.defineProperty(exports, "waitForAngularIdle", { enumerable: true, get: function () { return wait_1.waitForAngularIdle; } });
6
6
  var grid_steps_1 = require("./grid.steps");
@@ -18,4 +18,18 @@ var locators_1 = require("./locators");
18
18
  Object.defineProperty(exports, "findButton", { enumerable: true, get: function () { return locators_1.findButton; } });
19
19
  Object.defineProperty(exports, "findPopupMenu", { enumerable: true, get: function () { return locators_1.findPopupMenu; } });
20
20
  Object.defineProperty(exports, "findMenuItem", { enumerable: true, get: function () { return locators_1.findMenuItem; } });
21
+ var forms_1 = require("./forms");
22
+ Object.defineProperty(exports, "fillField", { enumerable: true, get: function () { return forms_1.fillField; } });
23
+ Object.defineProperty(exports, "fillDate", { enumerable: true, get: function () { return forms_1.fillDate; } });
24
+ Object.defineProperty(exports, "fillDateTime", { enumerable: true, get: function () { return forms_1.fillDateTime; } });
25
+ Object.defineProperty(exports, "selectOption", { enumerable: true, get: function () { return forms_1.selectOption; } });
26
+ Object.defineProperty(exports, "selectMultiple", { enumerable: true, get: function () { return forms_1.selectMultiple; } });
27
+ Object.defineProperty(exports, "selectRadio", { enumerable: true, get: function () { return forms_1.selectRadio; } });
28
+ Object.defineProperty(exports, "setCheckbox", { enumerable: true, get: function () { return forms_1.setCheckbox; } });
29
+ Object.defineProperty(exports, "setCheckboxGroup", { enumerable: true, get: function () { return forms_1.setCheckboxGroup; } });
30
+ Object.defineProperty(exports, "setToggle", { enumerable: true, get: function () { return forms_1.setToggle; } });
31
+ Object.defineProperty(exports, "addChip", { enumerable: true, get: function () { return forms_1.addChip; } });
32
+ Object.defineProperty(exports, "removeChip", { enumerable: true, get: function () { return forms_1.removeChip; } });
33
+ Object.defineProperty(exports, "setChips", { enumerable: true, get: function () { return forms_1.setChips; } });
34
+ Object.defineProperty(exports, "uploadFile", { enumerable: true, get: function () { return forms_1.uploadFile; } });
21
35
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/steps/index.ts"],"names":[],"mappings":";;;AAAA,+BAA4C;AAAnC,0GAAA,kBAAkB,OAAA;AAE3B,2CAMsB;AALpB,2GAAA,aAAa,OAAA;AACb,oHAAA,sBAAsB,OAAA;AACtB,8GAAA,gBAAgB,OAAA;AAChB,8GAAA,gBAAgB,OAAA;AAIlB,uDAG4B;AAF1B,kHAAA,cAAc,OAAA;AACd,kHAAA,cAAc,OAAA;AAGhB,+CAGwB;AAFtB,yGAAA,SAAS,OAAA;AACT,6GAAA,aAAa,OAAA;AAGf,uCAIoB;AAHlB,sGAAA,UAAU,OAAA;AACV,yGAAA,aAAa,OAAA;AACb,wGAAA,YAAY,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/steps/index.ts"],"names":[],"mappings":";;;AAAA,+BAA4C;AAAnC,0GAAA,kBAAkB,OAAA;AAE3B,2CAMsB;AALpB,2GAAA,aAAa,OAAA;AACb,oHAAA,sBAAsB,OAAA;AACtB,8GAAA,gBAAgB,OAAA;AAChB,8GAAA,gBAAgB,OAAA;AAIlB,uDAG4B;AAF1B,kHAAA,cAAc,OAAA;AACd,kHAAA,cAAc,OAAA;AAGhB,+CAGwB;AAFtB,yGAAA,SAAS,OAAA;AACT,6GAAA,aAAa,OAAA;AAGf,uCAIoB;AAHlB,sGAAA,UAAU,OAAA;AACV,yGAAA,aAAa,OAAA;AACb,wGAAA,YAAY,OAAA;AAGd,iCAciB;AAbf,kGAAA,SAAS,OAAA;AACT,iGAAA,QAAQ,OAAA;AACR,qGAAA,YAAY,OAAA;AACZ,qGAAA,YAAY,OAAA;AACZ,uGAAA,cAAc,OAAA;AACd,oGAAA,WAAW,OAAA;AACX,oGAAA,WAAW,OAAA;AACX,yGAAA,gBAAgB,OAAA;AAChB,kGAAA,SAAS,OAAA;AACT,gGAAA,OAAO,OAAA;AACP,mGAAA,UAAU,OAAA;AACV,iGAAA,QAAQ,OAAA;AACR,mGAAA,UAAU,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smartbit4all/playwright-qa",
3
- "version": "0.1.7",
3
+ "version": "0.1.8",
4
4
  "description": "Playwright-based testing and documentation framework for smartbit4all projects",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",