@vickbk/tests 0.1.0 → 0.2.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/CHANGELOG.md +39 -21
- package/LICENSE +21 -21
- package/README.md +226 -192
- package/dist/console-Cf1taTRK.mjs +39 -0
- package/dist/console-Cf1taTRK.mjs.map +1 -0
- package/dist/dom-DeHbD1ni.mjs +459 -0
- package/dist/dom-DeHbD1ni.mjs.map +1 -0
- package/dist/index-CKsosUpb.d.mts +249 -0
- package/dist/index-CKsosUpb.d.mts.map +1 -0
- package/dist/index-DtGBqDev.d.mts +25 -0
- package/dist/index-DtGBqDev.d.mts.map +1 -0
- package/dist/pattern-to-regex-BrMJtzu8.cjs.map +1 -1
- package/dist/pattern-to-regex-CO5Y0oDU.mjs.map +1 -1
- package/dist/playwright.cjs.map +1 -1
- package/dist/playwright.mjs.map +1 -1
- package/dist/promises.cjs +45 -0
- package/dist/promises.cjs.map +1 -0
- package/dist/promises.d.cts +34 -0
- package/dist/promises.d.cts.map +1 -0
- package/dist/promises.d.mts +34 -0
- package/dist/promises.d.mts.map +1 -0
- package/dist/promises.mjs +43 -0
- package/dist/promises.mjs.map +1 -0
- package/dist/react.cjs.map +1 -1
- package/dist/react.mjs.map +1 -1
- package/dist/vitest/console.d.mts +2 -0
- package/dist/vitest/console.mjs +1 -0
- package/dist/vitest/dom.d.mts +2 -0
- package/dist/vitest/dom.mjs +1 -0
- package/dist/vitest.d.mts +14 -270
- package/dist/vitest.d.mts.map +1 -1
- package/dist/vitest.mjs +13 -490
- package/dist/vitest.mjs.map +1 -1
- package/package.json +23 -1
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { fireEvent } from "@testing-library/react";
|
|
2
|
+
//#region src/features/vitest/modules/dom/modules/toggle-event/utils/types.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* Possible states for a disclosure or popover toggle transition.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* const nextState: ToggleState = "open";
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
type ToggleState = "open" | "closed";
|
|
12
|
+
/**
|
|
13
|
+
* The previous and next states dispatched by the toggle-event polyfill.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* const transition: ToggleConfig = { oldState: "closed", newState: "open" };
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
type ToggleConfig = Record<"oldState" | "newState", ToggleState>;
|
|
21
|
+
/**
|
|
22
|
+
* Internal shape added to Testing Library's `fireEvent` by its type augmentation.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* installToggleEvent();
|
|
27
|
+
* fireEvent.toggle(document.body, { newState: "open" });
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
type ToggleFireEventExtensions = {
|
|
31
|
+
toggle: (element: Document | Element | Window | Node, initDict?: Partial<ToggleConfig>) => boolean;
|
|
32
|
+
};
|
|
33
|
+
//#endregion
|
|
34
|
+
//#region src/features/vitest/modules/dom/modules/toggle-event/utils/fireEvent.d.ts
|
|
35
|
+
/**
|
|
36
|
+
* Testing Library's fireEvent API with an additional `toggle` event helper.
|
|
37
|
+
*
|
|
38
|
+
* The exported object copies the standard `fireEvent` properties and adds
|
|
39
|
+
* `toggle`, which dispatches the toggle event through `togglePolyfill`.
|
|
40
|
+
* It does not install the extension onto Testing Library's original export.
|
|
41
|
+
*
|
|
42
|
+
* Standard Testing Library event helpers remain available, including
|
|
43
|
+
* `click`, `change`, `input`, `submit`, `focus`, and keyboard/mouse events.
|
|
44
|
+
*
|
|
45
|
+
* @remarks
|
|
46
|
+
* The `toggle` helper defaults to a transition from `closed` to `open`.
|
|
47
|
+
* Call-specific configuration overrides those defaults. This helper does
|
|
48
|
+
* not maintain state between calls.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```ts
|
|
52
|
+
* import { fireEvent } from "@vickbk/tests/vitest";
|
|
53
|
+
*
|
|
54
|
+
* const disclosure = document.querySelector("details")!;
|
|
55
|
+
*
|
|
56
|
+
* fireEvent.toggle(disclosure);
|
|
57
|
+
* fireEvent.toggle(disclosure, { newState: "closed" });
|
|
58
|
+
* ```
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```ts
|
|
62
|
+
* import { fireEvent } from "@vickbk/tests/vitest";
|
|
63
|
+
*
|
|
64
|
+
* const button = document.querySelector("button")!;
|
|
65
|
+
*
|
|
66
|
+
* fireEvent.click(button);
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
declare const fireEvent$1: typeof fireEvent & ToggleFireEventExtensions;
|
|
70
|
+
//#endregion
|
|
71
|
+
//#region src/shared/regex/types.d.ts
|
|
72
|
+
type TEXT_PATTERN = RegExp | string;
|
|
73
|
+
type TEXT_WITH_NTH = [TEXT_PATTERN, number];
|
|
74
|
+
type TEXT_MATCHER = TEXT_PATTERN | TEXT_WITH_NTH;
|
|
75
|
+
//#endregion
|
|
76
|
+
//#region src/features/vitest/modules/dom/utils/clickLabelInput.d.ts
|
|
77
|
+
/**
|
|
78
|
+
* Simulates clicking an input found by its label or placeholder.
|
|
79
|
+
*
|
|
80
|
+
* @param label Label or placeholder text/regular expression identifying the input.
|
|
81
|
+
* @param container Optional element that limits the input search.
|
|
82
|
+
* @returns A promise that resolves after the click interaction completes.
|
|
83
|
+
* @example
|
|
84
|
+
* ```ts
|
|
85
|
+
* await clickLabelInput("Email address");
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
declare function clickLabelInput(label: TEXT_PATTERN, container?: HTMLElement): Promise<void>;
|
|
89
|
+
//#endregion
|
|
90
|
+
//#region src/features/vitest/modules/dom/utils/isChecked.d.ts
|
|
91
|
+
/**
|
|
92
|
+
* Asserts that the radio button or checkbox matching the accessible name is checked.
|
|
93
|
+
*
|
|
94
|
+
* @param selector Accessible label text or regular expression for the control.
|
|
95
|
+
* @param container Optional element that limits the control search.
|
|
96
|
+
* @returns Nothing; throws an assertion error if the control is absent or unchecked.
|
|
97
|
+
* @example
|
|
98
|
+
* ```ts
|
|
99
|
+
* isChecked("Accept terms");
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
declare function isChecked(selector: TEXT_PATTERN, container?: HTMLElement): void;
|
|
103
|
+
//#endregion
|
|
104
|
+
//#region src/features/vitest/modules/dom/utils/isNotChecked.d.ts
|
|
105
|
+
/**
|
|
106
|
+
* Asserts that the radio button or checkbox matching the accessible name is unchecked.
|
|
107
|
+
*
|
|
108
|
+
* @param selector Accessible label text or regular expression for the control.
|
|
109
|
+
* @param container Optional element that limits the control search.
|
|
110
|
+
* @returns Nothing; throws an assertion error if the control is absent or checked.
|
|
111
|
+
* @example
|
|
112
|
+
* ```ts
|
|
113
|
+
* isNotChecked("Subscribe to updates");
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
declare function isNotChecked(selector: TEXT_PATTERN, container?: HTMLElement): void;
|
|
117
|
+
//#endregion
|
|
118
|
+
//#region src/features/vitest/modules/dom/utils/shouldHaveAttributes.d.ts
|
|
119
|
+
/**
|
|
120
|
+
* Asserts that an HTMLElement possesses the expected set of DOM attributes and values.
|
|
121
|
+
*
|
|
122
|
+
* Handles string/numeric values, boolean attributes (true = present, false = absent),
|
|
123
|
+
* and null/undefined values (absent).
|
|
124
|
+
*
|
|
125
|
+
* @param element The DOM element whose attributes will be checked.
|
|
126
|
+
* @param attributes Attribute names mapped to their expected values.
|
|
127
|
+
* @returns Nothing; throws an assertion error when any attribute does not match.
|
|
128
|
+
* @example
|
|
129
|
+
* ```ts
|
|
130
|
+
* shouldHaveAttributes(input, { required: true, "aria-label": "Email" });
|
|
131
|
+
* ```
|
|
132
|
+
*/
|
|
133
|
+
declare function shouldHaveAttributes(element: HTMLElement, attributes: Record<string, unknown>): void;
|
|
134
|
+
//#endregion
|
|
135
|
+
//#region src/features/vitest/modules/dom/utils/shouldHaveTestId.d.ts
|
|
136
|
+
/**
|
|
137
|
+
* Asserts that elements with all supplied test IDs are present in the document.
|
|
138
|
+
*
|
|
139
|
+
* @param ids One or more `data-testid` values to locate.
|
|
140
|
+
* @returns The elements found, in the same order as the supplied IDs.
|
|
141
|
+
* @example
|
|
142
|
+
* ```ts
|
|
143
|
+
* const [submitButton] = shouldHaveTestId("submit-button");
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
146
|
+
declare function shouldHaveTestId(...ids: string[]): HTMLElement[];
|
|
147
|
+
//#endregion
|
|
148
|
+
//#region src/features/vitest/modules/dom/utils/shouldNotHaveTestId.d.ts
|
|
149
|
+
/**
|
|
150
|
+
* Asserts that elements with all supplied test IDs are absent from the document.
|
|
151
|
+
*
|
|
152
|
+
* @param ids One or more `data-testid` values to verify are absent.
|
|
153
|
+
* @returns The query results (`null` for each absent element), in ID order.
|
|
154
|
+
* @example
|
|
155
|
+
* ```ts
|
|
156
|
+
* shouldNotHaveTestId("loading-spinner");
|
|
157
|
+
* ```
|
|
158
|
+
*/
|
|
159
|
+
declare function shouldNotHaveTestId(...ids: string[]): (HTMLElement | null)[];
|
|
160
|
+
//#endregion
|
|
161
|
+
//#region src/features/vitest/modules/dom/utils/shouldNotSee.d.ts
|
|
162
|
+
/**
|
|
163
|
+
* Asserts that none of the supplied text matchers appear in the document.
|
|
164
|
+
*
|
|
165
|
+
* @param texts Text strings or regular expressions that must be absent.
|
|
166
|
+
* @returns Nothing; throws an assertion error if any text is found.
|
|
167
|
+
* @example
|
|
168
|
+
* ```ts
|
|
169
|
+
* shouldNotSee("Error", /failed/i);
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
172
|
+
declare const shouldNotSee: (...texts: (string | RegExp)[]) => void;
|
|
173
|
+
//#endregion
|
|
174
|
+
//#region src/features/vitest/modules/dom/utils/shouldSee.d.ts
|
|
175
|
+
/**
|
|
176
|
+
* Asserts that each requested text matcher is present in the document.
|
|
177
|
+
*
|
|
178
|
+
* @param texts Text strings, regular expressions, or `[matcher, occurrenceIndex]` pairs.
|
|
179
|
+
* @returns The matching elements in the same order as the supplied matchers.
|
|
180
|
+
* @example
|
|
181
|
+
* ```ts
|
|
182
|
+
* const [heading] = shouldSee("Welcome");
|
|
183
|
+
* ```
|
|
184
|
+
*/
|
|
185
|
+
declare const shouldSee: (...texts: TEXT_MATCHER[]) => HTMLElement[];
|
|
186
|
+
//#endregion
|
|
187
|
+
//#region src/features/vitest/modules/dom/utils/togglePopover.d.ts
|
|
188
|
+
/**
|
|
189
|
+
* Dispatches a toggle event on the first element matching a selector.
|
|
190
|
+
*
|
|
191
|
+
* @param options Selector, optional search container, and target open/closed state.
|
|
192
|
+
* @returns The matched element, or `undefined` when no matching element exists.
|
|
193
|
+
* @example
|
|
194
|
+
* ```ts
|
|
195
|
+
* const popover = togglePopover({ selector: "#help", newState: "open" });
|
|
196
|
+
* ```
|
|
197
|
+
*/
|
|
198
|
+
declare function togglePopover({ container, selector, newState }: {
|
|
199
|
+
container?: HTMLElement;
|
|
200
|
+
selector: string;
|
|
201
|
+
newState?: ToggleState;
|
|
202
|
+
}): Element | undefined;
|
|
203
|
+
//#endregion
|
|
204
|
+
//#region src/features/vitest/modules/dom/utils/userClicks.d.ts
|
|
205
|
+
/**
|
|
206
|
+
* Simulates a user click on a button with the requested name, or matching text.
|
|
207
|
+
*
|
|
208
|
+
* @param target Button accessible name or text string/regular expression.
|
|
209
|
+
* @param container Optional element that limits the target search.
|
|
210
|
+
* @returns A promise that resolves after the click interaction completes.
|
|
211
|
+
* @example
|
|
212
|
+
* ```ts
|
|
213
|
+
* await userClicks("Save");
|
|
214
|
+
* ```
|
|
215
|
+
*/
|
|
216
|
+
declare const userClicks: (target: string | RegExp, container?: HTMLElement) => Promise<void>;
|
|
217
|
+
//#endregion
|
|
218
|
+
//#region src/features/vitest/modules/dom/utils/userTypes.d.ts
|
|
219
|
+
/**
|
|
220
|
+
* Replaces the value of a textbox found by its label, placeholder, or textbox name.
|
|
221
|
+
*
|
|
222
|
+
* @param target Accessible label, placeholder, or textbox name as text or a regex.
|
|
223
|
+
* @param text Text to type after clearing the existing value.
|
|
224
|
+
* @param container Optional element that limits the textbox search.
|
|
225
|
+
* @param user User-event instance used for the interaction; defaults to a new instance.
|
|
226
|
+
* @returns A promise resolving to the textbox that was updated.
|
|
227
|
+
* @example
|
|
228
|
+
* ```ts
|
|
229
|
+
* const emailInput = await userTypes("Email", "person@example.com");
|
|
230
|
+
* ```
|
|
231
|
+
*/
|
|
232
|
+
declare const userTypes: (target: TEXT_PATTERN, text: string, container?: HTMLElement, user?: import("@testing-library/user-event").UserEvent) => Promise<HTMLElement>;
|
|
233
|
+
//#endregion
|
|
234
|
+
//#region src/features/vitest/modules/dom/utils/userTypesMultiple.d.ts
|
|
235
|
+
/**
|
|
236
|
+
* Replaces the values of multiple textboxes, located by their respective selectors.
|
|
237
|
+
*
|
|
238
|
+
* @param inputs Object mapping each textbox label/placeholder to the text to enter.
|
|
239
|
+
* @param container Optional element that limits all textbox searches.
|
|
240
|
+
* @returns A promise resolving to an object mapping each selector to its updated textbox.
|
|
241
|
+
* @example
|
|
242
|
+
* ```ts
|
|
243
|
+
* const fields = await userTypesMultiple({ Email: "person@example.com", Name: "Pat" });
|
|
244
|
+
* ```
|
|
245
|
+
*/
|
|
246
|
+
declare function userTypesMultiple(inputs: Record<string, string>, container?: HTMLElement): Promise<Record<string, HTMLElement>>;
|
|
247
|
+
//#endregion
|
|
248
|
+
export { shouldSee as a, shouldHaveTestId as c, isChecked as d, clickLabelInput as f, ToggleState as h, togglePopover as i, shouldHaveAttributes as l, ToggleConfig as m, userTypes as n, shouldNotSee as o, fireEvent$1 as p, userClicks as r, shouldNotHaveTestId as s, userTypesMultiple as t, isNotChecked as u };
|
|
249
|
+
//# sourceMappingURL=index-CKsosUpb.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-CKsosUpb.d.mts","names":["fireEvent","rtlFireEvent"],"sources":["../src/features/vitest/modules/dom/modules/toggle-event/utils/types.ts","../src/features/vitest/modules/dom/modules/toggle-event/utils/fireEvent.ts","../src/shared/regex/types.ts","../src/features/vitest/modules/dom/utils/clickLabelInput.ts","../src/features/vitest/modules/dom/utils/isChecked.ts","../src/features/vitest/modules/dom/utils/isNotChecked.ts","../src/features/vitest/modules/dom/utils/shouldHaveAttributes.ts","../src/features/vitest/modules/dom/utils/shouldHaveTestId.ts","../src/features/vitest/modules/dom/utils/shouldNotHaveTestId.ts","../src/features/vitest/modules/dom/utils/shouldNotSee.ts","../src/features/vitest/modules/dom/utils/shouldSee.ts","../src/features/vitest/modules/dom/utils/togglePopover.ts","../src/features/vitest/modules/dom/utils/userClicks.ts","../src/features/vitest/modules/dom/utils/userTypes.ts","../src/features/vitest/modules/dom/utils/userTypesMultiple.ts"],"mappings":";;;;;;;;;;KAQY;;;;;;;;;KAUA,eAAe,gCAAgC;;;;;;;;;;KAW/C;EACV,SACE,SAAS,WAAW,UAAU,SAAS,MACvC,WAAW,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cCQVA,oBAyBAC,YAAe;;;KCjEhB,eAAe;KAEf,iBAAiB;KACjB,eAAe,eAAe;;;;;;;;;;;;;;iBCapB,gBACpB,OAAO,cACP,YAAY,cAAW;;;;;;;;;;;;;;iBCHT,UAAU,UAAU,cAAc,YAAY;;;;;;;;;;;;;;iBCA9C,aAAa,UAAU,cAAc,YAAY;;;;;;;;;;;;;;;;;iBCCjD,qBACd,SAAS,aACT,YAAY;;;;;;;;;;;;;iBCLE,oBAAoB,gBAAa;;;;;;;;;;;;;iBCAjC,uBAAuB,iBAAa;;;;;;;;;;;;;cCDvC,kBAAmB,iBAAiB;;;;;;;;;;;;;cCCpC,eAAgB,OAAO,mBAAc;;;;;;;;;;;;;iBCDlC,gBACd,WACA,UACA;EAEA,YAAY;EACZ;EACA,WAAW;IACZ;;;;;;;;;;;;;;cCLY,aACX,iBAAiB,QACjB,YAAY,gBAAW;;;;;;;;;;;;;;;;cCAZ,YACX,QAAQ,cACR,cACA,YAAY,aACZ,6CAAA,cAAwB,QAAA;;;;;;;;;;;;;;iBCRJ,kBACpB,QAAQ,wBACR,YAAY,cAAW,QAAA,eAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//#region src/features/vitest/modules/console/utils/console.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Suppresses console.log, console.warn, and console.error until resetConsole runs.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* beforeEach(shutConsole);
|
|
8
|
+
* afterEach(resetConsole);
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
declare function shutConsole(): void;
|
|
12
|
+
/**
|
|
13
|
+
* Restores the console methods most recently suppressed by shutConsole.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* shutConsole();
|
|
18
|
+
* // Run code whose console output should be ignored.
|
|
19
|
+
* resetConsole();
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
declare function resetConsole(): void;
|
|
23
|
+
//#endregion
|
|
24
|
+
export { shutConsole as n, resetConsole as t };
|
|
25
|
+
//# sourceMappingURL=index-DtGBqDev.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-DtGBqDev.d.mts","names":[],"sources":["../src/features/vitest/modules/console/utils/console.ts"],"mappings":";;;;;;;;;;iBAegB;;;;;;;;;;;iBAkBA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pattern-to-regex-BrMJtzu8.cjs","names":[],"sources":["../src/shared/regex/utils/escape-regex.ts","../src/shared/regex/utils/pattern-to-regex.ts"],"sourcesContent":["export function escapeRegExp(str: string): string {\
|
|
1
|
+
{"version":3,"file":"pattern-to-regex-BrMJtzu8.cjs","names":[],"sources":["../src/shared/regex/utils/escape-regex.ts","../src/shared/regex/utils/pattern-to-regex.ts"],"sourcesContent":["export function escapeRegExp(str: string): string {\n if (typeof RegExp.escape === \"function\") {\n return RegExp.escape(str);\n }\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n","import { TEXT_PATTERN } from \"../types\";\nimport { escapeRegExp } from \"./escape-regex\";\n\nexport function patternToRegex(\n target: TEXT_PATTERN,\n flags: string = \"i\",\n): RegExp {\n return typeof target === \"string\"\n ? new RegExp(escapeRegExp(target), flags)\n : target;\n}\n"],"mappings":";AAAA,SAAgB,aAAa,KAAqB;CAChD,IAAI,OAAO,OAAO,WAAW,YAC3B,OAAO,OAAO,OAAO,GAAG;CAE1B,OAAO,IAAI,QAAQ,uBAAuB,MAAM;AAClD;;;ACFA,SAAgB,eACd,QACA,QAAgB,KACR;CACR,OAAO,OAAO,WAAW,WACrB,IAAI,OAAO,aAAa,MAAM,GAAG,KAAK,IACtC;AACN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pattern-to-regex-CO5Y0oDU.mjs","names":[],"sources":["../src/shared/regex/utils/escape-regex.ts","../src/shared/regex/utils/pattern-to-regex.ts"],"sourcesContent":["export function escapeRegExp(str: string): string {\
|
|
1
|
+
{"version":3,"file":"pattern-to-regex-CO5Y0oDU.mjs","names":[],"sources":["../src/shared/regex/utils/escape-regex.ts","../src/shared/regex/utils/pattern-to-regex.ts"],"sourcesContent":["export function escapeRegExp(str: string): string {\n if (typeof RegExp.escape === \"function\") {\n return RegExp.escape(str);\n }\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n","import { TEXT_PATTERN } from \"../types\";\nimport { escapeRegExp } from \"./escape-regex\";\n\nexport function patternToRegex(\n target: TEXT_PATTERN,\n flags: string = \"i\",\n): RegExp {\n return typeof target === \"string\"\n ? new RegExp(escapeRegExp(target), flags)\n : target;\n}\n"],"mappings":";AAAA,SAAgB,aAAa,KAAqB;CAChD,IAAI,OAAO,OAAO,WAAW,YAC3B,OAAO,OAAO,OAAO,GAAG;CAE1B,OAAO,IAAI,QAAQ,uBAAuB,MAAM;AAClD;;;ACFA,SAAgB,eACd,QACA,QAAgB,KACR;CACR,OAAO,OAAO,WAAW,WACrB,IAAI,OAAO,aAAa,MAAM,GAAG,KAAK,IACtC;AACN"}
|
package/dist/playwright.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwright.cjs","names":["expect","expect","expect","patternToRegex","patternToRegex","test"],"sources":["../src/features/playwright/modules/assertions/utils/isChecked.ts","../src/features/playwright/modules/assertions/utils/isNotChecked.ts","../src/features/playwright/modules/assertions/utils/getMatcher.ts","../src/features/playwright/modules/assertions/utils/shouldNotSee.ts","../src/features/playwright/modules/assertions/utils/shouldSee.ts","../src/features/playwright/modules/interactions/utils/clickBodyCorner.ts","../src/features/playwright/shared/locators/utils/getLocatorByText.ts","../src/features/playwright/shared/locators/utils/getButton.ts","../src/features/playwright/shared/locators/utils/getLabel.ts","../src/features/playwright/shared/locators/utils/getLink.ts","../src/features/playwright/modules/interactions/utils/clickButton.ts","../src/features/playwright/modules/interactions/utils/clickLabelInput.ts","../src/features/playwright/modules/interactions/utils/clickLink.ts","../src/features/playwright/modules/interactions/utils/clickMultipleLabelInputs.ts","../src/features/playwright/modules/interactions/utils/fillLocatorWith.ts","../src/features/playwright/modules/interactions/utils/setLocatorValue.ts","../src/features/playwright/modules/interactions/utils/setValueForLocators.ts","../src/features/playwright/modules/runners/utils/runSimilarTests.ts"],"sourcesContent":["import type { Locator, Page } from \"@playwright/test\";\r\nimport { expect } from \"@playwright/test\";\r\n\r\n/**\r\n * Asserts that the element selected by the CSS selector is checked.\r\n *\r\n * @param page The Playwright page to search.\r\n * @param selector CSS selector for a checkbox or radio input.\r\n * @returns The checked locator.\r\n * @example\r\n * ```ts\r\n * const checkbox = await isChecked(page, \"#terms\");\r\n * ```\r\n */\r\nexport async function isChecked(\r\n page: Page,\r\n selector: string,\r\n): Promise<Locator> {\r\n const locator = page.locator(selector);\r\n await expect(locator).toBeChecked();\r\n return locator;\r\n}\r\n","import type { Locator, Page } from \"@playwright/test\";\r\nimport { expect } from \"@playwright/test\";\r\n\r\n/**\r\n * Asserts that the element selected by the CSS selector is not checked.\r\n *\r\n * @param page The Playwright page to search.\r\n * @param selector CSS selector for a checkbox or radio input.\r\n * @returns The unchecked locator.\r\n * @example\r\n * ```ts\r\n * const checkbox = await isNotChecked(page, \"#terms\");\r\n * ```\r\n */\r\nexport async function isNotChecked(\r\n page: Page,\r\n selector: string,\r\n): Promise<Locator> {\r\n const locator = page.locator(selector);\r\n await expect(locator).not.toBeChecked();\r\n return locator;\r\n}\r\n","import { patternToRegex } from \"@/shared/regex\";\r\nimport { expect, type Locator, type Page } from \"@playwright/test\";\r\nimport { TEXT_MATCHER } from \"../types\";\r\n\r\nexport function getMatcher(\r\n page: Page,\r\n ...textes: TEXT_MATCHER[]\r\n): ReturnType<typeof expect<Locator>>[] {\r\n return textes.map((text) => {\r\n if (Array.isArray(text)) {\r\n const [matcher, nth] = text;\r\n return expect(page.getByText(patternToRegex(matcher)).nth(nth));\r\n }\r\n return expect(page.getByText(text));\r\n });\r\n}\r\n","import type { Page } from \"@playwright/test\";\r\nimport type { TEXT_MATCHER } from \"../types\";\r\nimport { getMatcher } from \"./getMatcher\";\r\n\r\n/**\r\n * Asserts that each text matcher is not visible on the page.\r\n *\r\n * @param page The Playwright page to inspect.\r\n * @param textes Text strings, regular expressions, or `[matcher, occurrenceIndex]` pairs.\r\n * @returns A promise that resolves when every matching element is not visible.\r\n * @example\r\n * ```ts\r\n * await shouldNotSee(page, \"Error message\");\r\n * ```\r\n */\r\nexport async function shouldNotSee(page: Page, ...textes: TEXT_MATCHER[]) {\r\n const matchers = getMatcher(page, ...textes);\r\n for (let i = 0; i < matchers.length; i++) {\r\n await matchers[i].not.toBeVisible();\r\n }\r\n}\r\n","import type { Page } from \"@playwright/test\";\r\nimport type { TEXT_MATCHER } from \"../types\";\r\nimport { getMatcher } from \"./getMatcher\";\r\n\r\n/**\r\n * Asserts that each text matcher is visible on the page.\r\n *\r\n * @param page The Playwright page to inspect.\r\n * @param textes Text strings, regular expressions, or `[matcher, occurrenceIndex]` pairs.\r\n * @returns A promise that resolves when every matching element is visible.\r\n * @example\r\n * ```ts\r\n * await shouldSee(page, \"Welcome\", [/Saved/i, 0]);\r\n * ```\r\n */\r\nexport async function shouldSee(page: Page, ...textes: TEXT_MATCHER[]) {\r\n const matchers = getMatcher(page, ...textes);\r\n for (let i = 0; i < matchers.length; i++) {\r\n await matchers[i].toBeVisible();\r\n }\r\n}\r\n","import type { Page } from \"@playwright/test\";\r\n\r\n/**\r\n * Clicks the top-left corner of the page body.\r\n *\r\n * @param page The Playwright page to interact with.\r\n * @returns A promise that resolves after the click.\r\n * @example\r\n * ```ts\r\n * await clickBodyCorner(page);\r\n * ```\r\n */\r\nexport async function clickBodyCorner(page: Page) {\r\n await page.locator(\"body\").click({ position: { x: 0, y: 0 } });\r\n}\r\n","import type { Page } from \"@playwright/test\";\r\nimport type { LocatorWithText } from \"../types\";\r\n\r\n/**\r\n * Locates elements matching a selector and text pattern.\r\n *\r\n * @param page The Playwright page to search.\r\n * @param locator Selector paired with text that the element must contain.\r\n * @returns A locator matching the selector and text.\r\n * @example\r\n * ```ts\r\n * const save = getLocatorByText(page, [\"button\", \"Save\"]);\r\n * ```\r\n */\r\nexport function getLocatorByText(\r\n page: Page,\r\n [locator, hasText]: LocatorWithText,\r\n) {\r\n return page.locator(locator, { hasText });\r\n}\r\n","import { TEXT_PATTERN } from \"@/shared/regex\";\r\nimport type { Page } from \"@playwright/test\";\r\nimport { getLocatorByText } from \"./getLocatorByText\";\r\n\r\n/**\r\n * Locates a button by its contained text.\r\n *\r\n * @param page The Playwright page to search.\r\n * @param hasText Text or regular expression contained by the button.\r\n * @returns A locator for the matching button.\r\n * @example\r\n * ```ts\r\n * const saveButton = getButton(page, \"Save\");\r\n * ```\r\n */\r\nexport function getButton(page: Page, hasText: TEXT_PATTERN) {\r\n return getLocatorByText(page, [\"button\", hasText]);\r\n}\r\n","import { TEXT_PATTERN } from \"@/shared/regex\";\r\nimport type { Page } from \"@playwright/test\";\r\nimport { getLocatorByText } from \"./getLocatorByText\";\r\n\r\n/**\r\n * Locates a label by its contained text.\r\n *\r\n * @param page The Playwright page to search.\r\n * @param hasText Text or regular expression contained by the label.\r\n * @returns A locator for the matching label.\r\n * @example\r\n * ```ts\r\n * const emailLabel = getLabel(page, \"Email\");\r\n * ```\r\n */\r\nexport function getLabel(page: Page, hasText: TEXT_PATTERN) {\r\n return getLocatorByText(page, [\"label\", hasText]);\r\n}\r\n","import { TEXT_PATTERN } from \"@/shared/regex\";\r\nimport type { Page } from \"@playwright/test\";\r\n\r\n/**\r\n * Locates a link by its accessible name.\r\n *\r\n * @param page The Playwright page to search.\r\n * @param hasText Text or regular expression matching the link's accessible name.\r\n * @returns A locator for the matching link.\r\n * @example\r\n * ```ts\r\n * const documentationLink = getLink(page, \"Documentation\");\r\n * ```\r\n */\r\nexport function getLink(page: Page, hasText: TEXT_PATTERN) {\r\n return page.getByRole(\"link\", { name: hasText });\r\n}\r\n","import { getButton } from \"@/features/playwright/shared/locators\";\r\nimport { TEXT_PATTERN } from \"@/shared/regex\";\r\nimport type { Page } from \"@playwright/test\";\r\n\r\n/**\r\n * Clicks a button matching the supplied text.\r\n *\r\n * @param page The Playwright page to search.\r\n * @param hasText Text or regular expression contained by the button.\r\n * @returns A promise that resolves after the button is clicked.\r\n * @example\r\n * ```ts\r\n * await clickButton(page, \"Save\");\r\n * ```\r\n */\r\nexport async function clickButton(page: Page, hasText: TEXT_PATTERN) {\r\n await getButton(page, hasText).click();\r\n}\r\n","import { getLabel } from \"@/features/playwright/shared/locators\";\r\nimport { TEXT_PATTERN } from \"@/shared/regex\";\r\nimport type { Page } from \"@playwright/test\";\r\n\r\n/**\r\n * Clicks the label matching the supplied text.\r\n *\r\n * @param page The Playwright page to search.\r\n * @param labelText Text or regular expression contained by the label.\r\n * @returns A promise that resolves after the label is clicked.\r\n * @example\r\n * ```ts\r\n * await clickLabelInput(page, \"Subscribe\");\r\n * ```\r\n */\r\nexport async function clickLabelInput(page: Page, labelText: TEXT_PATTERN) {\r\n await getLabel(page, labelText).click();\r\n}\r\n","import { getLink } from \"@/features/playwright/shared/locators\";\r\nimport { TEXT_PATTERN } from \"@/shared/regex\";\r\nimport type { Page } from \"@playwright/test\";\r\n\r\n/**\r\n * Clicks a link matching the supplied accessible name.\r\n *\r\n * @param page The Playwright page to search.\r\n * @param hasText Text or regular expression matching the link name.\r\n * @returns A promise that resolves after the link is clicked.\r\n * @example\r\n * ```ts\r\n * await clickLink(page, \"Documentation\");\r\n * ```\r\n */\r\nexport async function clickLink(page: Page, hasText: TEXT_PATTERN) {\r\n await getLink(page, hasText).click();\r\n}\r\n","import { TEXT_PATTERN } from \"@/shared/regex\";\r\nimport type { Page } from \"@playwright/test\";\r\nimport { clickLabelInput } from \"./clickLabelInput\";\r\n\r\n/**\r\n * Clicks each matching label in the supplied order.\r\n *\r\n * @param page The Playwright page to search.\r\n * @param labelTexts Text or regular expressions for the labels to click.\r\n * @returns A promise that resolves after all labels are clicked.\r\n * @example\r\n * ```ts\r\n * await clickMultipleLabelInputs(page, [\"Email\", \"Subscribe\"]);\r\n * ```\r\n */\r\nexport async function clickMultipleLabelInputs(\r\n page: Page,\r\n labelTexts: TEXT_PATTERN[],\r\n) {\r\n for (const labelText of labelTexts) {\r\n await clickLabelInput(page, labelText);\r\n }\r\n}\r\n","import type { Locator } from \"@playwright/test\";\r\n\r\n/**\r\n * Clicks a locator and fills it with the supplied value.\r\n *\r\n * @param locator The input-like locator to fill.\r\n * @param value The value to enter.\r\n * @returns A promise that resolves after the locator is filled.\r\n * @example\r\n * ```ts\r\n * await fillLocatorWith(page.getByLabel(\"Email\"), \"user@example.com\");\r\n * ```\r\n */\r\nexport async function fillLocatorWith(locator: Locator, value: string) {\r\n await locator.click();\r\n await locator.fill(value);\r\n}\r\n","import { type LABEL_LOCATOR, patternToRegex } from \"@/shared/regex\";\r\nimport type { Page } from \"@playwright/test\";\r\n\r\n/**\r\n * Clicks the label matching the pattern and fills it with the supplied value.\r\n *\r\n * @param page The Playwright page to search.\r\n * @param locatorAndValue Label text or pattern paired with the value to fill.\r\n * @returns A promise that resolves after the matching label is filled.\r\n * @example\r\n * ```ts\r\n * await setLocatorValue(page, [\"Email\", \"user@example.com\"]);\r\n * ```\r\n */\r\nexport async function setLocatorValue(\r\n page: Page,\r\n [locator, value]: LABEL_LOCATOR,\r\n) {\r\n const element = page.locator(\"label\", { hasText: patternToRegex(locator) });\r\n await element.click();\r\n await element.fill(value);\r\n}\r\n","import { LABEL_LOCATOR } from \"@/shared/regex\";\r\nimport type { Page } from \"@playwright/test\";\r\nimport { setLocatorValue } from \"./setLocatorValue\";\r\n\r\n/**\r\n * Sets values for a sequence of label/value pairs in order.\r\n *\r\n * @param page The Playwright page to search.\r\n * @param locatorsAndValues Label text or pattern paired with its value.\r\n * @returns A promise that resolves after all values are set.\r\n * @example\r\n * ```ts\r\n * await setValueForLocators(page, [\r\n * [\"Email\", \"user@example.com\"],\r\n * [\"Name\", \"Alex\"],\r\n * ]);\r\n * ```\r\n */\r\nexport async function setValueForLocators(\r\n page: Page,\r\n locatorsAndValues: LABEL_LOCATOR[],\r\n) {\r\n for (const locatorAndValue of locatorsAndValues) {\r\n await setLocatorValue(page, locatorAndValue);\r\n }\r\n}\r\n","import test from \"@playwright/test\";\r\nimport type { SimpleTest } from \"../types\";\r\n\r\n/**\r\n * Registers tests that share the same page navigation and setup.\r\n *\r\n * @param tests Tuples of test names followed by page callbacks.\r\n * @returns Nothing; registers one Playwright test for each tuple.\r\n * @example\r\n * ```ts\r\n * runSimilarTests([\r\n * [\"shows the home page\", async (page) => {\r\n * await page.getByRole(\"heading\", { name: \"Home\" }).waitFor();\r\n * }],\r\n * ]);\r\n * ```\r\n */\r\nexport function runSimilarTests(...tests: SimpleTest[]) {\r\n tests.forEach(([testName, ...testFunctions]) =>\r\n test(testName, async ({ page }) => {\r\n await page.goto(\"/\");\r\n for (const testFunction of testFunctions) await testFunction(page);\r\n }),\r\n );\r\n}\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"playwright.cjs","names":["expect","expect","expect","patternToRegex","patternToRegex","test"],"sources":["../src/features/playwright/modules/assertions/utils/isChecked.ts","../src/features/playwright/modules/assertions/utils/isNotChecked.ts","../src/features/playwright/modules/assertions/utils/getMatcher.ts","../src/features/playwright/modules/assertions/utils/shouldNotSee.ts","../src/features/playwright/modules/assertions/utils/shouldSee.ts","../src/features/playwright/modules/interactions/utils/clickBodyCorner.ts","../src/features/playwright/shared/locators/utils/getLocatorByText.ts","../src/features/playwright/shared/locators/utils/getButton.ts","../src/features/playwright/shared/locators/utils/getLabel.ts","../src/features/playwright/shared/locators/utils/getLink.ts","../src/features/playwright/modules/interactions/utils/clickButton.ts","../src/features/playwright/modules/interactions/utils/clickLabelInput.ts","../src/features/playwright/modules/interactions/utils/clickLink.ts","../src/features/playwright/modules/interactions/utils/clickMultipleLabelInputs.ts","../src/features/playwright/modules/interactions/utils/fillLocatorWith.ts","../src/features/playwright/modules/interactions/utils/setLocatorValue.ts","../src/features/playwright/modules/interactions/utils/setValueForLocators.ts","../src/features/playwright/modules/runners/utils/runSimilarTests.ts"],"sourcesContent":["import type { Locator, Page } from \"@playwright/test\";\nimport { expect } from \"@playwright/test\";\n\n/**\n * Asserts that the element selected by the CSS selector is checked.\n *\n * @param page The Playwright page to search.\n * @param selector CSS selector for a checkbox or radio input.\n * @returns The checked locator.\n * @example\n * ```ts\n * const checkbox = await isChecked(page, \"#terms\");\n * ```\n */\nexport async function isChecked(\n page: Page,\n selector: string,\n): Promise<Locator> {\n const locator = page.locator(selector);\n await expect(locator).toBeChecked();\n return locator;\n}\n","import type { Locator, Page } from \"@playwright/test\";\nimport { expect } from \"@playwright/test\";\n\n/**\n * Asserts that the element selected by the CSS selector is not checked.\n *\n * @param page The Playwright page to search.\n * @param selector CSS selector for a checkbox or radio input.\n * @returns The unchecked locator.\n * @example\n * ```ts\n * const checkbox = await isNotChecked(page, \"#terms\");\n * ```\n */\nexport async function isNotChecked(\n page: Page,\n selector: string,\n): Promise<Locator> {\n const locator = page.locator(selector);\n await expect(locator).not.toBeChecked();\n return locator;\n}\n","import { patternToRegex } from \"@/shared/regex\";\nimport { expect, type Locator, type Page } from \"@playwright/test\";\nimport { TEXT_MATCHER } from \"../types\";\n\nexport function getMatcher(\n page: Page,\n ...textes: TEXT_MATCHER[]\n): ReturnType<typeof expect<Locator>>[] {\n return textes.map((text) => {\n if (Array.isArray(text)) {\n const [matcher, nth] = text;\n return expect(page.getByText(patternToRegex(matcher)).nth(nth));\n }\n return expect(page.getByText(text));\n });\n}\n","import type { Page } from \"@playwright/test\";\nimport type { TEXT_MATCHER } from \"../types\";\nimport { getMatcher } from \"./getMatcher\";\n\n/**\n * Asserts that each text matcher is not visible on the page.\n *\n * @param page The Playwright page to inspect.\n * @param textes Text strings, regular expressions, or `[matcher, occurrenceIndex]` pairs.\n * @returns A promise that resolves when every matching element is not visible.\n * @example\n * ```ts\n * await shouldNotSee(page, \"Error message\");\n * ```\n */\nexport async function shouldNotSee(page: Page, ...textes: TEXT_MATCHER[]) {\n const matchers = getMatcher(page, ...textes);\n for (let i = 0; i < matchers.length; i++) {\n await matchers[i].not.toBeVisible();\n }\n}\n","import type { Page } from \"@playwright/test\";\nimport type { TEXT_MATCHER } from \"../types\";\nimport { getMatcher } from \"./getMatcher\";\n\n/**\n * Asserts that each text matcher is visible on the page.\n *\n * @param page The Playwright page to inspect.\n * @param textes Text strings, regular expressions, or `[matcher, occurrenceIndex]` pairs.\n * @returns A promise that resolves when every matching element is visible.\n * @example\n * ```ts\n * await shouldSee(page, \"Welcome\", [/Saved/i, 0]);\n * ```\n */\nexport async function shouldSee(page: Page, ...textes: TEXT_MATCHER[]) {\n const matchers = getMatcher(page, ...textes);\n for (let i = 0; i < matchers.length; i++) {\n await matchers[i].toBeVisible();\n }\n}\n","import type { Page } from \"@playwright/test\";\n\n/**\n * Clicks the top-left corner of the page body.\n *\n * @param page The Playwright page to interact with.\n * @returns A promise that resolves after the click.\n * @example\n * ```ts\n * await clickBodyCorner(page);\n * ```\n */\nexport async function clickBodyCorner(page: Page) {\n await page.locator(\"body\").click({ position: { x: 0, y: 0 } });\n}\n","import type { Page } from \"@playwright/test\";\nimport type { LocatorWithText } from \"../types\";\n\n/**\n * Locates elements matching a selector and text pattern.\n *\n * @param page The Playwright page to search.\n * @param locator Selector paired with text that the element must contain.\n * @returns A locator matching the selector and text.\n * @example\n * ```ts\n * const save = getLocatorByText(page, [\"button\", \"Save\"]);\n * ```\n */\nexport function getLocatorByText(\n page: Page,\n [locator, hasText]: LocatorWithText,\n) {\n return page.locator(locator, { hasText });\n}\n","import { TEXT_PATTERN } from \"@/shared/regex\";\nimport type { Page } from \"@playwright/test\";\nimport { getLocatorByText } from \"./getLocatorByText\";\n\n/**\n * Locates a button by its contained text.\n *\n * @param page The Playwright page to search.\n * @param hasText Text or regular expression contained by the button.\n * @returns A locator for the matching button.\n * @example\n * ```ts\n * const saveButton = getButton(page, \"Save\");\n * ```\n */\nexport function getButton(page: Page, hasText: TEXT_PATTERN) {\n return getLocatorByText(page, [\"button\", hasText]);\n}\n","import { TEXT_PATTERN } from \"@/shared/regex\";\nimport type { Page } from \"@playwright/test\";\nimport { getLocatorByText } from \"./getLocatorByText\";\n\n/**\n * Locates a label by its contained text.\n *\n * @param page The Playwright page to search.\n * @param hasText Text or regular expression contained by the label.\n * @returns A locator for the matching label.\n * @example\n * ```ts\n * const emailLabel = getLabel(page, \"Email\");\n * ```\n */\nexport function getLabel(page: Page, hasText: TEXT_PATTERN) {\n return getLocatorByText(page, [\"label\", hasText]);\n}\n","import { TEXT_PATTERN } from \"@/shared/regex\";\nimport type { Page } from \"@playwright/test\";\n\n/**\n * Locates a link by its accessible name.\n *\n * @param page The Playwright page to search.\n * @param hasText Text or regular expression matching the link's accessible name.\n * @returns A locator for the matching link.\n * @example\n * ```ts\n * const documentationLink = getLink(page, \"Documentation\");\n * ```\n */\nexport function getLink(page: Page, hasText: TEXT_PATTERN) {\n return page.getByRole(\"link\", { name: hasText });\n}\n","import { getButton } from \"@/features/playwright/shared/locators\";\nimport { TEXT_PATTERN } from \"@/shared/regex\";\nimport type { Page } from \"@playwright/test\";\n\n/**\n * Clicks a button matching the supplied text.\n *\n * @param page The Playwright page to search.\n * @param hasText Text or regular expression contained by the button.\n * @returns A promise that resolves after the button is clicked.\n * @example\n * ```ts\n * await clickButton(page, \"Save\");\n * ```\n */\nexport async function clickButton(page: Page, hasText: TEXT_PATTERN) {\n await getButton(page, hasText).click();\n}\n","import { getLabel } from \"@/features/playwright/shared/locators\";\nimport { TEXT_PATTERN } from \"@/shared/regex\";\nimport type { Page } from \"@playwright/test\";\n\n/**\n * Clicks the label matching the supplied text.\n *\n * @param page The Playwright page to search.\n * @param labelText Text or regular expression contained by the label.\n * @returns A promise that resolves after the label is clicked.\n * @example\n * ```ts\n * await clickLabelInput(page, \"Subscribe\");\n * ```\n */\nexport async function clickLabelInput(page: Page, labelText: TEXT_PATTERN) {\n await getLabel(page, labelText).click();\n}\n","import { getLink } from \"@/features/playwright/shared/locators\";\nimport { TEXT_PATTERN } from \"@/shared/regex\";\nimport type { Page } from \"@playwright/test\";\n\n/**\n * Clicks a link matching the supplied accessible name.\n *\n * @param page The Playwright page to search.\n * @param hasText Text or regular expression matching the link name.\n * @returns A promise that resolves after the link is clicked.\n * @example\n * ```ts\n * await clickLink(page, \"Documentation\");\n * ```\n */\nexport async function clickLink(page: Page, hasText: TEXT_PATTERN) {\n await getLink(page, hasText).click();\n}\n","import { TEXT_PATTERN } from \"@/shared/regex\";\nimport type { Page } from \"@playwright/test\";\nimport { clickLabelInput } from \"./clickLabelInput\";\n\n/**\n * Clicks each matching label in the supplied order.\n *\n * @param page The Playwright page to search.\n * @param labelTexts Text or regular expressions for the labels to click.\n * @returns A promise that resolves after all labels are clicked.\n * @example\n * ```ts\n * await clickMultipleLabelInputs(page, [\"Email\", \"Subscribe\"]);\n * ```\n */\nexport async function clickMultipleLabelInputs(\n page: Page,\n labelTexts: TEXT_PATTERN[],\n) {\n for (const labelText of labelTexts) {\n await clickLabelInput(page, labelText);\n }\n}\n","import type { Locator } from \"@playwright/test\";\n\n/**\n * Clicks a locator and fills it with the supplied value.\n *\n * @param locator The input-like locator to fill.\n * @param value The value to enter.\n * @returns A promise that resolves after the locator is filled.\n * @example\n * ```ts\n * await fillLocatorWith(page.getByLabel(\"Email\"), \"user@example.com\");\n * ```\n */\nexport async function fillLocatorWith(locator: Locator, value: string) {\n await locator.click();\n await locator.fill(value);\n}\n","import { type LABEL_LOCATOR, patternToRegex } from \"@/shared/regex\";\nimport type { Page } from \"@playwright/test\";\n\n/**\n * Clicks the label matching the pattern and fills it with the supplied value.\n *\n * @param page The Playwright page to search.\n * @param locatorAndValue Label text or pattern paired with the value to fill.\n * @returns A promise that resolves after the matching label is filled.\n * @example\n * ```ts\n * await setLocatorValue(page, [\"Email\", \"user@example.com\"]);\n * ```\n */\nexport async function setLocatorValue(\n page: Page,\n [locator, value]: LABEL_LOCATOR,\n) {\n const element = page.locator(\"label\", { hasText: patternToRegex(locator) });\n await element.click();\n await element.fill(value);\n}\n","import { LABEL_LOCATOR } from \"@/shared/regex\";\nimport type { Page } from \"@playwright/test\";\nimport { setLocatorValue } from \"./setLocatorValue\";\n\n/**\n * Sets values for a sequence of label/value pairs in order.\n *\n * @param page The Playwright page to search.\n * @param locatorsAndValues Label text or pattern paired with its value.\n * @returns A promise that resolves after all values are set.\n * @example\n * ```ts\n * await setValueForLocators(page, [\n * [\"Email\", \"user@example.com\"],\n * [\"Name\", \"Alex\"],\n * ]);\n * ```\n */\nexport async function setValueForLocators(\n page: Page,\n locatorsAndValues: LABEL_LOCATOR[],\n) {\n for (const locatorAndValue of locatorsAndValues) {\n await setLocatorValue(page, locatorAndValue);\n }\n}\n","import test from \"@playwright/test\";\nimport type { SimpleTest } from \"../types\";\n\n/**\n * Registers tests that share the same page navigation and setup.\n *\n * @param tests Tuples of test names followed by page callbacks.\n * @returns Nothing; registers one Playwright test for each tuple.\n * @example\n * ```ts\n * runSimilarTests([\n * [\"shows the home page\", async (page) => {\n * await page.getByRole(\"heading\", { name: \"Home\" }).waitFor();\n * }],\n * ]);\n * ```\n */\nexport function runSimilarTests(...tests: SimpleTest[]) {\n tests.forEach(([testName, ...testFunctions]) =>\n test(testName, async ({ page }) => {\n await page.goto(\"/\");\n for (const testFunction of testFunctions) await testFunction(page);\n }),\n );\n}\n"],"mappings":"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"}
|
package/dist/playwright.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwright.mjs","names":[],"sources":["../src/features/playwright/modules/assertions/utils/isChecked.ts","../src/features/playwright/modules/assertions/utils/isNotChecked.ts","../src/features/playwright/modules/assertions/utils/getMatcher.ts","../src/features/playwright/modules/assertions/utils/shouldNotSee.ts","../src/features/playwright/modules/assertions/utils/shouldSee.ts","../src/features/playwright/modules/interactions/utils/clickBodyCorner.ts","../src/features/playwright/shared/locators/utils/getLocatorByText.ts","../src/features/playwright/shared/locators/utils/getButton.ts","../src/features/playwright/shared/locators/utils/getLabel.ts","../src/features/playwright/shared/locators/utils/getLink.ts","../src/features/playwright/modules/interactions/utils/clickButton.ts","../src/features/playwright/modules/interactions/utils/clickLabelInput.ts","../src/features/playwright/modules/interactions/utils/clickLink.ts","../src/features/playwright/modules/interactions/utils/clickMultipleLabelInputs.ts","../src/features/playwright/modules/interactions/utils/fillLocatorWith.ts","../src/features/playwright/modules/interactions/utils/setLocatorValue.ts","../src/features/playwright/modules/interactions/utils/setValueForLocators.ts","../src/features/playwright/modules/runners/utils/runSimilarTests.ts"],"sourcesContent":["import type { Locator, Page } from \"@playwright/test\";\r\nimport { expect } from \"@playwright/test\";\r\n\r\n/**\r\n * Asserts that the element selected by the CSS selector is checked.\r\n *\r\n * @param page The Playwright page to search.\r\n * @param selector CSS selector for a checkbox or radio input.\r\n * @returns The checked locator.\r\n * @example\r\n * ```ts\r\n * const checkbox = await isChecked(page, \"#terms\");\r\n * ```\r\n */\r\nexport async function isChecked(\r\n page: Page,\r\n selector: string,\r\n): Promise<Locator> {\r\n const locator = page.locator(selector);\r\n await expect(locator).toBeChecked();\r\n return locator;\r\n}\r\n","import type { Locator, Page } from \"@playwright/test\";\r\nimport { expect } from \"@playwright/test\";\r\n\r\n/**\r\n * Asserts that the element selected by the CSS selector is not checked.\r\n *\r\n * @param page The Playwright page to search.\r\n * @param selector CSS selector for a checkbox or radio input.\r\n * @returns The unchecked locator.\r\n * @example\r\n * ```ts\r\n * const checkbox = await isNotChecked(page, \"#terms\");\r\n * ```\r\n */\r\nexport async function isNotChecked(\r\n page: Page,\r\n selector: string,\r\n): Promise<Locator> {\r\n const locator = page.locator(selector);\r\n await expect(locator).not.toBeChecked();\r\n return locator;\r\n}\r\n","import { patternToRegex } from \"@/shared/regex\";\r\nimport { expect, type Locator, type Page } from \"@playwright/test\";\r\nimport { TEXT_MATCHER } from \"../types\";\r\n\r\nexport function getMatcher(\r\n page: Page,\r\n ...textes: TEXT_MATCHER[]\r\n): ReturnType<typeof expect<Locator>>[] {\r\n return textes.map((text) => {\r\n if (Array.isArray(text)) {\r\n const [matcher, nth] = text;\r\n return expect(page.getByText(patternToRegex(matcher)).nth(nth));\r\n }\r\n return expect(page.getByText(text));\r\n });\r\n}\r\n","import type { Page } from \"@playwright/test\";\r\nimport type { TEXT_MATCHER } from \"../types\";\r\nimport { getMatcher } from \"./getMatcher\";\r\n\r\n/**\r\n * Asserts that each text matcher is not visible on the page.\r\n *\r\n * @param page The Playwright page to inspect.\r\n * @param textes Text strings, regular expressions, or `[matcher, occurrenceIndex]` pairs.\r\n * @returns A promise that resolves when every matching element is not visible.\r\n * @example\r\n * ```ts\r\n * await shouldNotSee(page, \"Error message\");\r\n * ```\r\n */\r\nexport async function shouldNotSee(page: Page, ...textes: TEXT_MATCHER[]) {\r\n const matchers = getMatcher(page, ...textes);\r\n for (let i = 0; i < matchers.length; i++) {\r\n await matchers[i].not.toBeVisible();\r\n }\r\n}\r\n","import type { Page } from \"@playwright/test\";\r\nimport type { TEXT_MATCHER } from \"../types\";\r\nimport { getMatcher } from \"./getMatcher\";\r\n\r\n/**\r\n * Asserts that each text matcher is visible on the page.\r\n *\r\n * @param page The Playwright page to inspect.\r\n * @param textes Text strings, regular expressions, or `[matcher, occurrenceIndex]` pairs.\r\n * @returns A promise that resolves when every matching element is visible.\r\n * @example\r\n * ```ts\r\n * await shouldSee(page, \"Welcome\", [/Saved/i, 0]);\r\n * ```\r\n */\r\nexport async function shouldSee(page: Page, ...textes: TEXT_MATCHER[]) {\r\n const matchers = getMatcher(page, ...textes);\r\n for (let i = 0; i < matchers.length; i++) {\r\n await matchers[i].toBeVisible();\r\n }\r\n}\r\n","import type { Page } from \"@playwright/test\";\r\n\r\n/**\r\n * Clicks the top-left corner of the page body.\r\n *\r\n * @param page The Playwright page to interact with.\r\n * @returns A promise that resolves after the click.\r\n * @example\r\n * ```ts\r\n * await clickBodyCorner(page);\r\n * ```\r\n */\r\nexport async function clickBodyCorner(page: Page) {\r\n await page.locator(\"body\").click({ position: { x: 0, y: 0 } });\r\n}\r\n","import type { Page } from \"@playwright/test\";\r\nimport type { LocatorWithText } from \"../types\";\r\n\r\n/**\r\n * Locates elements matching a selector and text pattern.\r\n *\r\n * @param page The Playwright page to search.\r\n * @param locator Selector paired with text that the element must contain.\r\n * @returns A locator matching the selector and text.\r\n * @example\r\n * ```ts\r\n * const save = getLocatorByText(page, [\"button\", \"Save\"]);\r\n * ```\r\n */\r\nexport function getLocatorByText(\r\n page: Page,\r\n [locator, hasText]: LocatorWithText,\r\n) {\r\n return page.locator(locator, { hasText });\r\n}\r\n","import { TEXT_PATTERN } from \"@/shared/regex\";\r\nimport type { Page } from \"@playwright/test\";\r\nimport { getLocatorByText } from \"./getLocatorByText\";\r\n\r\n/**\r\n * Locates a button by its contained text.\r\n *\r\n * @param page The Playwright page to search.\r\n * @param hasText Text or regular expression contained by the button.\r\n * @returns A locator for the matching button.\r\n * @example\r\n * ```ts\r\n * const saveButton = getButton(page, \"Save\");\r\n * ```\r\n */\r\nexport function getButton(page: Page, hasText: TEXT_PATTERN) {\r\n return getLocatorByText(page, [\"button\", hasText]);\r\n}\r\n","import { TEXT_PATTERN } from \"@/shared/regex\";\r\nimport type { Page } from \"@playwright/test\";\r\nimport { getLocatorByText } from \"./getLocatorByText\";\r\n\r\n/**\r\n * Locates a label by its contained text.\r\n *\r\n * @param page The Playwright page to search.\r\n * @param hasText Text or regular expression contained by the label.\r\n * @returns A locator for the matching label.\r\n * @example\r\n * ```ts\r\n * const emailLabel = getLabel(page, \"Email\");\r\n * ```\r\n */\r\nexport function getLabel(page: Page, hasText: TEXT_PATTERN) {\r\n return getLocatorByText(page, [\"label\", hasText]);\r\n}\r\n","import { TEXT_PATTERN } from \"@/shared/regex\";\r\nimport type { Page } from \"@playwright/test\";\r\n\r\n/**\r\n * Locates a link by its accessible name.\r\n *\r\n * @param page The Playwright page to search.\r\n * @param hasText Text or regular expression matching the link's accessible name.\r\n * @returns A locator for the matching link.\r\n * @example\r\n * ```ts\r\n * const documentationLink = getLink(page, \"Documentation\");\r\n * ```\r\n */\r\nexport function getLink(page: Page, hasText: TEXT_PATTERN) {\r\n return page.getByRole(\"link\", { name: hasText });\r\n}\r\n","import { getButton } from \"@/features/playwright/shared/locators\";\r\nimport { TEXT_PATTERN } from \"@/shared/regex\";\r\nimport type { Page } from \"@playwright/test\";\r\n\r\n/**\r\n * Clicks a button matching the supplied text.\r\n *\r\n * @param page The Playwright page to search.\r\n * @param hasText Text or regular expression contained by the button.\r\n * @returns A promise that resolves after the button is clicked.\r\n * @example\r\n * ```ts\r\n * await clickButton(page, \"Save\");\r\n * ```\r\n */\r\nexport async function clickButton(page: Page, hasText: TEXT_PATTERN) {\r\n await getButton(page, hasText).click();\r\n}\r\n","import { getLabel } from \"@/features/playwright/shared/locators\";\r\nimport { TEXT_PATTERN } from \"@/shared/regex\";\r\nimport type { Page } from \"@playwright/test\";\r\n\r\n/**\r\n * Clicks the label matching the supplied text.\r\n *\r\n * @param page The Playwright page to search.\r\n * @param labelText Text or regular expression contained by the label.\r\n * @returns A promise that resolves after the label is clicked.\r\n * @example\r\n * ```ts\r\n * await clickLabelInput(page, \"Subscribe\");\r\n * ```\r\n */\r\nexport async function clickLabelInput(page: Page, labelText: TEXT_PATTERN) {\r\n await getLabel(page, labelText).click();\r\n}\r\n","import { getLink } from \"@/features/playwright/shared/locators\";\r\nimport { TEXT_PATTERN } from \"@/shared/regex\";\r\nimport type { Page } from \"@playwright/test\";\r\n\r\n/**\r\n * Clicks a link matching the supplied accessible name.\r\n *\r\n * @param page The Playwright page to search.\r\n * @param hasText Text or regular expression matching the link name.\r\n * @returns A promise that resolves after the link is clicked.\r\n * @example\r\n * ```ts\r\n * await clickLink(page, \"Documentation\");\r\n * ```\r\n */\r\nexport async function clickLink(page: Page, hasText: TEXT_PATTERN) {\r\n await getLink(page, hasText).click();\r\n}\r\n","import { TEXT_PATTERN } from \"@/shared/regex\";\r\nimport type { Page } from \"@playwright/test\";\r\nimport { clickLabelInput } from \"./clickLabelInput\";\r\n\r\n/**\r\n * Clicks each matching label in the supplied order.\r\n *\r\n * @param page The Playwright page to search.\r\n * @param labelTexts Text or regular expressions for the labels to click.\r\n * @returns A promise that resolves after all labels are clicked.\r\n * @example\r\n * ```ts\r\n * await clickMultipleLabelInputs(page, [\"Email\", \"Subscribe\"]);\r\n * ```\r\n */\r\nexport async function clickMultipleLabelInputs(\r\n page: Page,\r\n labelTexts: TEXT_PATTERN[],\r\n) {\r\n for (const labelText of labelTexts) {\r\n await clickLabelInput(page, labelText);\r\n }\r\n}\r\n","import type { Locator } from \"@playwright/test\";\r\n\r\n/**\r\n * Clicks a locator and fills it with the supplied value.\r\n *\r\n * @param locator The input-like locator to fill.\r\n * @param value The value to enter.\r\n * @returns A promise that resolves after the locator is filled.\r\n * @example\r\n * ```ts\r\n * await fillLocatorWith(page.getByLabel(\"Email\"), \"user@example.com\");\r\n * ```\r\n */\r\nexport async function fillLocatorWith(locator: Locator, value: string) {\r\n await locator.click();\r\n await locator.fill(value);\r\n}\r\n","import { type LABEL_LOCATOR, patternToRegex } from \"@/shared/regex\";\r\nimport type { Page } from \"@playwright/test\";\r\n\r\n/**\r\n * Clicks the label matching the pattern and fills it with the supplied value.\r\n *\r\n * @param page The Playwright page to search.\r\n * @param locatorAndValue Label text or pattern paired with the value to fill.\r\n * @returns A promise that resolves after the matching label is filled.\r\n * @example\r\n * ```ts\r\n * await setLocatorValue(page, [\"Email\", \"user@example.com\"]);\r\n * ```\r\n */\r\nexport async function setLocatorValue(\r\n page: Page,\r\n [locator, value]: LABEL_LOCATOR,\r\n) {\r\n const element = page.locator(\"label\", { hasText: patternToRegex(locator) });\r\n await element.click();\r\n await element.fill(value);\r\n}\r\n","import { LABEL_LOCATOR } from \"@/shared/regex\";\r\nimport type { Page } from \"@playwright/test\";\r\nimport { setLocatorValue } from \"./setLocatorValue\";\r\n\r\n/**\r\n * Sets values for a sequence of label/value pairs in order.\r\n *\r\n * @param page The Playwright page to search.\r\n * @param locatorsAndValues Label text or pattern paired with its value.\r\n * @returns A promise that resolves after all values are set.\r\n * @example\r\n * ```ts\r\n * await setValueForLocators(page, [\r\n * [\"Email\", \"user@example.com\"],\r\n * [\"Name\", \"Alex\"],\r\n * ]);\r\n * ```\r\n */\r\nexport async function setValueForLocators(\r\n page: Page,\r\n locatorsAndValues: LABEL_LOCATOR[],\r\n) {\r\n for (const locatorAndValue of locatorsAndValues) {\r\n await setLocatorValue(page, locatorAndValue);\r\n }\r\n}\r\n","import test from \"@playwright/test\";\r\nimport type { SimpleTest } from \"../types\";\r\n\r\n/**\r\n * Registers tests that share the same page navigation and setup.\r\n *\r\n * @param tests Tuples of test names followed by page callbacks.\r\n * @returns Nothing; registers one Playwright test for each tuple.\r\n * @example\r\n * ```ts\r\n * runSimilarTests([\r\n * [\"shows the home page\", async (page) => {\r\n * await page.getByRole(\"heading\", { name: \"Home\" }).waitFor();\r\n * }],\r\n * ]);\r\n * ```\r\n */\r\nexport function runSimilarTests(...tests: SimpleTest[]) {\r\n tests.forEach(([testName, ...testFunctions]) =>\r\n test(testName, async ({ page }) => {\r\n await page.goto(\"/\");\r\n for (const testFunction of testFunctions) await testFunction(page);\r\n }),\r\n );\r\n}\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"playwright.mjs","names":[],"sources":["../src/features/playwright/modules/assertions/utils/isChecked.ts","../src/features/playwright/modules/assertions/utils/isNotChecked.ts","../src/features/playwright/modules/assertions/utils/getMatcher.ts","../src/features/playwright/modules/assertions/utils/shouldNotSee.ts","../src/features/playwright/modules/assertions/utils/shouldSee.ts","../src/features/playwright/modules/interactions/utils/clickBodyCorner.ts","../src/features/playwright/shared/locators/utils/getLocatorByText.ts","../src/features/playwright/shared/locators/utils/getButton.ts","../src/features/playwright/shared/locators/utils/getLabel.ts","../src/features/playwright/shared/locators/utils/getLink.ts","../src/features/playwright/modules/interactions/utils/clickButton.ts","../src/features/playwright/modules/interactions/utils/clickLabelInput.ts","../src/features/playwright/modules/interactions/utils/clickLink.ts","../src/features/playwright/modules/interactions/utils/clickMultipleLabelInputs.ts","../src/features/playwright/modules/interactions/utils/fillLocatorWith.ts","../src/features/playwright/modules/interactions/utils/setLocatorValue.ts","../src/features/playwright/modules/interactions/utils/setValueForLocators.ts","../src/features/playwright/modules/runners/utils/runSimilarTests.ts"],"sourcesContent":["import type { Locator, Page } from \"@playwright/test\";\nimport { expect } from \"@playwright/test\";\n\n/**\n * Asserts that the element selected by the CSS selector is checked.\n *\n * @param page The Playwright page to search.\n * @param selector CSS selector for a checkbox or radio input.\n * @returns The checked locator.\n * @example\n * ```ts\n * const checkbox = await isChecked(page, \"#terms\");\n * ```\n */\nexport async function isChecked(\n page: Page,\n selector: string,\n): Promise<Locator> {\n const locator = page.locator(selector);\n await expect(locator).toBeChecked();\n return locator;\n}\n","import type { Locator, Page } from \"@playwright/test\";\nimport { expect } from \"@playwright/test\";\n\n/**\n * Asserts that the element selected by the CSS selector is not checked.\n *\n * @param page The Playwright page to search.\n * @param selector CSS selector for a checkbox or radio input.\n * @returns The unchecked locator.\n * @example\n * ```ts\n * const checkbox = await isNotChecked(page, \"#terms\");\n * ```\n */\nexport async function isNotChecked(\n page: Page,\n selector: string,\n): Promise<Locator> {\n const locator = page.locator(selector);\n await expect(locator).not.toBeChecked();\n return locator;\n}\n","import { patternToRegex } from \"@/shared/regex\";\nimport { expect, type Locator, type Page } from \"@playwright/test\";\nimport { TEXT_MATCHER } from \"../types\";\n\nexport function getMatcher(\n page: Page,\n ...textes: TEXT_MATCHER[]\n): ReturnType<typeof expect<Locator>>[] {\n return textes.map((text) => {\n if (Array.isArray(text)) {\n const [matcher, nth] = text;\n return expect(page.getByText(patternToRegex(matcher)).nth(nth));\n }\n return expect(page.getByText(text));\n });\n}\n","import type { Page } from \"@playwright/test\";\nimport type { TEXT_MATCHER } from \"../types\";\nimport { getMatcher } from \"./getMatcher\";\n\n/**\n * Asserts that each text matcher is not visible on the page.\n *\n * @param page The Playwright page to inspect.\n * @param textes Text strings, regular expressions, or `[matcher, occurrenceIndex]` pairs.\n * @returns A promise that resolves when every matching element is not visible.\n * @example\n * ```ts\n * await shouldNotSee(page, \"Error message\");\n * ```\n */\nexport async function shouldNotSee(page: Page, ...textes: TEXT_MATCHER[]) {\n const matchers = getMatcher(page, ...textes);\n for (let i = 0; i < matchers.length; i++) {\n await matchers[i].not.toBeVisible();\n }\n}\n","import type { Page } from \"@playwright/test\";\nimport type { TEXT_MATCHER } from \"../types\";\nimport { getMatcher } from \"./getMatcher\";\n\n/**\n * Asserts that each text matcher is visible on the page.\n *\n * @param page The Playwright page to inspect.\n * @param textes Text strings, regular expressions, or `[matcher, occurrenceIndex]` pairs.\n * @returns A promise that resolves when every matching element is visible.\n * @example\n * ```ts\n * await shouldSee(page, \"Welcome\", [/Saved/i, 0]);\n * ```\n */\nexport async function shouldSee(page: Page, ...textes: TEXT_MATCHER[]) {\n const matchers = getMatcher(page, ...textes);\n for (let i = 0; i < matchers.length; i++) {\n await matchers[i].toBeVisible();\n }\n}\n","import type { Page } from \"@playwright/test\";\n\n/**\n * Clicks the top-left corner of the page body.\n *\n * @param page The Playwright page to interact with.\n * @returns A promise that resolves after the click.\n * @example\n * ```ts\n * await clickBodyCorner(page);\n * ```\n */\nexport async function clickBodyCorner(page: Page) {\n await page.locator(\"body\").click({ position: { x: 0, y: 0 } });\n}\n","import type { Page } from \"@playwright/test\";\nimport type { LocatorWithText } from \"../types\";\n\n/**\n * Locates elements matching a selector and text pattern.\n *\n * @param page The Playwright page to search.\n * @param locator Selector paired with text that the element must contain.\n * @returns A locator matching the selector and text.\n * @example\n * ```ts\n * const save = getLocatorByText(page, [\"button\", \"Save\"]);\n * ```\n */\nexport function getLocatorByText(\n page: Page,\n [locator, hasText]: LocatorWithText,\n) {\n return page.locator(locator, { hasText });\n}\n","import { TEXT_PATTERN } from \"@/shared/regex\";\nimport type { Page } from \"@playwright/test\";\nimport { getLocatorByText } from \"./getLocatorByText\";\n\n/**\n * Locates a button by its contained text.\n *\n * @param page The Playwright page to search.\n * @param hasText Text or regular expression contained by the button.\n * @returns A locator for the matching button.\n * @example\n * ```ts\n * const saveButton = getButton(page, \"Save\");\n * ```\n */\nexport function getButton(page: Page, hasText: TEXT_PATTERN) {\n return getLocatorByText(page, [\"button\", hasText]);\n}\n","import { TEXT_PATTERN } from \"@/shared/regex\";\nimport type { Page } from \"@playwright/test\";\nimport { getLocatorByText } from \"./getLocatorByText\";\n\n/**\n * Locates a label by its contained text.\n *\n * @param page The Playwright page to search.\n * @param hasText Text or regular expression contained by the label.\n * @returns A locator for the matching label.\n * @example\n * ```ts\n * const emailLabel = getLabel(page, \"Email\");\n * ```\n */\nexport function getLabel(page: Page, hasText: TEXT_PATTERN) {\n return getLocatorByText(page, [\"label\", hasText]);\n}\n","import { TEXT_PATTERN } from \"@/shared/regex\";\nimport type { Page } from \"@playwright/test\";\n\n/**\n * Locates a link by its accessible name.\n *\n * @param page The Playwright page to search.\n * @param hasText Text or regular expression matching the link's accessible name.\n * @returns A locator for the matching link.\n * @example\n * ```ts\n * const documentationLink = getLink(page, \"Documentation\");\n * ```\n */\nexport function getLink(page: Page, hasText: TEXT_PATTERN) {\n return page.getByRole(\"link\", { name: hasText });\n}\n","import { getButton } from \"@/features/playwright/shared/locators\";\nimport { TEXT_PATTERN } from \"@/shared/regex\";\nimport type { Page } from \"@playwright/test\";\n\n/**\n * Clicks a button matching the supplied text.\n *\n * @param page The Playwright page to search.\n * @param hasText Text or regular expression contained by the button.\n * @returns A promise that resolves after the button is clicked.\n * @example\n * ```ts\n * await clickButton(page, \"Save\");\n * ```\n */\nexport async function clickButton(page: Page, hasText: TEXT_PATTERN) {\n await getButton(page, hasText).click();\n}\n","import { getLabel } from \"@/features/playwright/shared/locators\";\nimport { TEXT_PATTERN } from \"@/shared/regex\";\nimport type { Page } from \"@playwright/test\";\n\n/**\n * Clicks the label matching the supplied text.\n *\n * @param page The Playwright page to search.\n * @param labelText Text or regular expression contained by the label.\n * @returns A promise that resolves after the label is clicked.\n * @example\n * ```ts\n * await clickLabelInput(page, \"Subscribe\");\n * ```\n */\nexport async function clickLabelInput(page: Page, labelText: TEXT_PATTERN) {\n await getLabel(page, labelText).click();\n}\n","import { getLink } from \"@/features/playwright/shared/locators\";\nimport { TEXT_PATTERN } from \"@/shared/regex\";\nimport type { Page } from \"@playwright/test\";\n\n/**\n * Clicks a link matching the supplied accessible name.\n *\n * @param page The Playwright page to search.\n * @param hasText Text or regular expression matching the link name.\n * @returns A promise that resolves after the link is clicked.\n * @example\n * ```ts\n * await clickLink(page, \"Documentation\");\n * ```\n */\nexport async function clickLink(page: Page, hasText: TEXT_PATTERN) {\n await getLink(page, hasText).click();\n}\n","import { TEXT_PATTERN } from \"@/shared/regex\";\nimport type { Page } from \"@playwright/test\";\nimport { clickLabelInput } from \"./clickLabelInput\";\n\n/**\n * Clicks each matching label in the supplied order.\n *\n * @param page The Playwright page to search.\n * @param labelTexts Text or regular expressions for the labels to click.\n * @returns A promise that resolves after all labels are clicked.\n * @example\n * ```ts\n * await clickMultipleLabelInputs(page, [\"Email\", \"Subscribe\"]);\n * ```\n */\nexport async function clickMultipleLabelInputs(\n page: Page,\n labelTexts: TEXT_PATTERN[],\n) {\n for (const labelText of labelTexts) {\n await clickLabelInput(page, labelText);\n }\n}\n","import type { Locator } from \"@playwright/test\";\n\n/**\n * Clicks a locator and fills it with the supplied value.\n *\n * @param locator The input-like locator to fill.\n * @param value The value to enter.\n * @returns A promise that resolves after the locator is filled.\n * @example\n * ```ts\n * await fillLocatorWith(page.getByLabel(\"Email\"), \"user@example.com\");\n * ```\n */\nexport async function fillLocatorWith(locator: Locator, value: string) {\n await locator.click();\n await locator.fill(value);\n}\n","import { type LABEL_LOCATOR, patternToRegex } from \"@/shared/regex\";\nimport type { Page } from \"@playwright/test\";\n\n/**\n * Clicks the label matching the pattern and fills it with the supplied value.\n *\n * @param page The Playwright page to search.\n * @param locatorAndValue Label text or pattern paired with the value to fill.\n * @returns A promise that resolves after the matching label is filled.\n * @example\n * ```ts\n * await setLocatorValue(page, [\"Email\", \"user@example.com\"]);\n * ```\n */\nexport async function setLocatorValue(\n page: Page,\n [locator, value]: LABEL_LOCATOR,\n) {\n const element = page.locator(\"label\", { hasText: patternToRegex(locator) });\n await element.click();\n await element.fill(value);\n}\n","import { LABEL_LOCATOR } from \"@/shared/regex\";\nimport type { Page } from \"@playwright/test\";\nimport { setLocatorValue } from \"./setLocatorValue\";\n\n/**\n * Sets values for a sequence of label/value pairs in order.\n *\n * @param page The Playwright page to search.\n * @param locatorsAndValues Label text or pattern paired with its value.\n * @returns A promise that resolves after all values are set.\n * @example\n * ```ts\n * await setValueForLocators(page, [\n * [\"Email\", \"user@example.com\"],\n * [\"Name\", \"Alex\"],\n * ]);\n * ```\n */\nexport async function setValueForLocators(\n page: Page,\n locatorsAndValues: LABEL_LOCATOR[],\n) {\n for (const locatorAndValue of locatorsAndValues) {\n await setLocatorValue(page, locatorAndValue);\n }\n}\n","import test from \"@playwright/test\";\nimport type { SimpleTest } from \"../types\";\n\n/**\n * Registers tests that share the same page navigation and setup.\n *\n * @param tests Tuples of test names followed by page callbacks.\n * @returns Nothing; registers one Playwright test for each tuple.\n * @example\n * ```ts\n * runSimilarTests([\n * [\"shows the home page\", async (page) => {\n * await page.getByRole(\"heading\", { name: \"Home\" }).waitFor();\n * }],\n * ]);\n * ```\n */\nexport function runSimilarTests(...tests: SimpleTest[]) {\n tests.forEach(([testName, ...testFunctions]) =>\n test(testName, async ({ page }) => {\n await page.goto(\"/\");\n for (const testFunction of testFunctions) await testFunction(page);\n }),\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
//#region src/features/promises/utils/resolvedPromise.ts
|
|
3
|
+
/**
|
|
4
|
+
* Creates a fulfilled promise augmented with Vitest's fulfilled-promise metadata.
|
|
5
|
+
*
|
|
6
|
+
* @param value The value with which the promise is fulfilled.
|
|
7
|
+
* @returns A fulfilled Promise<T> with `status: "fulfilled"` and its `value`.
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* const payload = await resolvedPromise({ id: 1 });
|
|
11
|
+
* expect(payload).toEqual({ id: 1 });
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
function resolvedPromise(value) {
|
|
15
|
+
const promise = Promise.resolve(value);
|
|
16
|
+
return Object.assign(promise, {
|
|
17
|
+
status: "fulfilled",
|
|
18
|
+
value
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
//#region src/features/promises/utils/rejectedPromise.ts
|
|
23
|
+
/**
|
|
24
|
+
* Creates a rejected promise augmented with Vitest's rejected-promise metadata.
|
|
25
|
+
*
|
|
26
|
+
* @param reason The rejection reason, preserved as an unknown value; defaults to `undefined`.
|
|
27
|
+
* @returns A rejected Promise<never> with `status: "rejected"` and its `reason`.
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* await expect(rejectedPromise(new Error("Request failed"))).rejects.toThrow("Request failed");
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
function rejectedPromise(reason = void 0) {
|
|
34
|
+
const promise = Promise.reject(reason);
|
|
35
|
+
promise.catch((error) => error);
|
|
36
|
+
return Object.assign(promise, {
|
|
37
|
+
status: "rejected",
|
|
38
|
+
reason
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
//#endregion
|
|
42
|
+
exports.rejectedPromise = rejectedPromise;
|
|
43
|
+
exports.resolvedPromise = resolvedPromise;
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=promises.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promises.cjs","names":[],"sources":["../src/features/promises/utils/resolvedPromise.ts","../src/features/promises/utils/rejectedPromise.ts"],"sourcesContent":["/**\n * Creates a fulfilled promise augmented with Vitest's fulfilled-promise metadata.\n *\n * @param value The value with which the promise is fulfilled.\n * @returns A fulfilled Promise<T> with `status: \"fulfilled\"` and its `value`.\n * @example\n * ```ts\n * const payload = await resolvedPromise({ id: 1 });\n * expect(payload).toEqual({ id: 1 });\n * ```\n */\nexport function resolvedPromise<T>(\n value: T,\n): Promise<T> & { status: \"fulfilled\"; value: T } {\n const promise = Promise.resolve(value);\n return Object.assign(promise, { status: \"fulfilled\" as const, value });\n}\n","/**\n * Creates a rejected promise augmented with Vitest's rejected-promise metadata.\n *\n * @param reason The rejection reason, preserved as an unknown value; defaults to `undefined`.\n * @returns A rejected Promise<never> with `status: \"rejected\"` and its `reason`.\n * @example\n * ```ts\n * await expect(rejectedPromise(new Error(\"Request failed\"))).rejects.toThrow(\"Request failed\");\n * ```\n */\nexport function rejectedPromise(\n reason: unknown = undefined,\n): Promise<never> & { status: \"rejected\"; reason: unknown } {\n const promise = Promise.reject<never>(reason);\n\n promise.catch((error) => error);\n\n return Object.assign(promise, { status: \"rejected\" as const, reason });\n}\n"],"mappings":";;;;;;;;;;;;;AAWA,SAAgB,gBACd,OACgD;CAChD,MAAM,UAAU,QAAQ,QAAQ,KAAK;CACrC,OAAO,OAAO,OAAO,SAAS;EAAE,QAAQ;EAAsB;CAAM,CAAC;AACvE;;;;;;;;;;;;;ACNA,SAAgB,gBACd,SAAkB,KAAA,GACwC;CAC1D,MAAM,UAAU,QAAQ,OAAc,MAAM;CAE5C,QAAQ,OAAO,UAAU,KAAK;CAE9B,OAAO,OAAO,OAAO,SAAS;EAAE,QAAQ;EAAqB;CAAO,CAAC;AACvE"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
//#region src/features/promises/utils/resolvedPromise.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a fulfilled promise augmented with Vitest's fulfilled-promise metadata.
|
|
4
|
+
*
|
|
5
|
+
* @param value The value with which the promise is fulfilled.
|
|
6
|
+
* @returns A fulfilled Promise<T> with `status: "fulfilled"` and its `value`.
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* const payload = await resolvedPromise({ id: 1 });
|
|
10
|
+
* expect(payload).toEqual({ id: 1 });
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
export declare function resolvedPromise<T>(value: T): Promise<T> & {
|
|
14
|
+
status: "fulfilled";
|
|
15
|
+
value: T;
|
|
16
|
+
};
|
|
17
|
+
//#endregion
|
|
18
|
+
//#region src/features/promises/utils/rejectedPromise.d.ts
|
|
19
|
+
/**
|
|
20
|
+
* Creates a rejected promise augmented with Vitest's rejected-promise metadata.
|
|
21
|
+
*
|
|
22
|
+
* @param reason The rejection reason, preserved as an unknown value; defaults to `undefined`.
|
|
23
|
+
* @returns A rejected Promise<never> with `status: "rejected"` and its `reason`.
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* await expect(rejectedPromise(new Error("Request failed"))).rejects.toThrow("Request failed");
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare function rejectedPromise(reason?: unknown): Promise<never> & {
|
|
30
|
+
status: "rejected";
|
|
31
|
+
reason: unknown;
|
|
32
|
+
};
|
|
33
|
+
//#endregion
|
|
34
|
+
//# sourceMappingURL=promises.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promises.d.cts","names":[],"sources":["../src/features/promises/utils/resolvedPromise.ts","../src/features/promises/utils/rejectedPromise.ts"],"mappings":";;;;;;;;;;;;wBAWgB,gBAAgB,GAC9B,OAAO,IACN,QAAQ;EAAO;EAAqB,OAAO;;;;;;;;;;;;;;wBCH9B,gBACd,mBACC;EAAmB;EAAoB"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
//#region src/features/promises/utils/resolvedPromise.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a fulfilled promise augmented with Vitest's fulfilled-promise metadata.
|
|
4
|
+
*
|
|
5
|
+
* @param value The value with which the promise is fulfilled.
|
|
6
|
+
* @returns A fulfilled Promise<T> with `status: "fulfilled"` and its `value`.
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* const payload = await resolvedPromise({ id: 1 });
|
|
10
|
+
* expect(payload).toEqual({ id: 1 });
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
export declare function resolvedPromise<T>(value: T): Promise<T> & {
|
|
14
|
+
status: "fulfilled";
|
|
15
|
+
value: T;
|
|
16
|
+
};
|
|
17
|
+
//#endregion
|
|
18
|
+
//#region src/features/promises/utils/rejectedPromise.d.ts
|
|
19
|
+
/**
|
|
20
|
+
* Creates a rejected promise augmented with Vitest's rejected-promise metadata.
|
|
21
|
+
*
|
|
22
|
+
* @param reason The rejection reason, preserved as an unknown value; defaults to `undefined`.
|
|
23
|
+
* @returns A rejected Promise<never> with `status: "rejected"` and its `reason`.
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* await expect(rejectedPromise(new Error("Request failed"))).rejects.toThrow("Request failed");
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare function rejectedPromise(reason?: unknown): Promise<never> & {
|
|
30
|
+
status: "rejected";
|
|
31
|
+
reason: unknown;
|
|
32
|
+
};
|
|
33
|
+
//#endregion
|
|
34
|
+
//# sourceMappingURL=promises.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"promises.d.mts","names":[],"sources":["../src/features/promises/utils/resolvedPromise.ts","../src/features/promises/utils/rejectedPromise.ts"],"mappings":";;;;;;;;;;;;wBAWgB,gBAAgB,GAC9B,OAAO,IACN,QAAQ;EAAO;EAAqB,OAAO;;;;;;;;;;;;;;wBCH9B,gBACd,mBACC;EAAmB;EAAoB"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
//#region src/features/promises/utils/resolvedPromise.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates a fulfilled promise augmented with Vitest's fulfilled-promise metadata.
|
|
4
|
+
*
|
|
5
|
+
* @param value The value with which the promise is fulfilled.
|
|
6
|
+
* @returns A fulfilled Promise<T> with `status: "fulfilled"` and its `value`.
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* const payload = await resolvedPromise({ id: 1 });
|
|
10
|
+
* expect(payload).toEqual({ id: 1 });
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
function resolvedPromise(value) {
|
|
14
|
+
const promise = Promise.resolve(value);
|
|
15
|
+
return Object.assign(promise, {
|
|
16
|
+
status: "fulfilled",
|
|
17
|
+
value
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
//#region src/features/promises/utils/rejectedPromise.ts
|
|
22
|
+
/**
|
|
23
|
+
* Creates a rejected promise augmented with Vitest's rejected-promise metadata.
|
|
24
|
+
*
|
|
25
|
+
* @param reason The rejection reason, preserved as an unknown value; defaults to `undefined`.
|
|
26
|
+
* @returns A rejected Promise<never> with `status: "rejected"` and its `reason`.
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* await expect(rejectedPromise(new Error("Request failed"))).rejects.toThrow("Request failed");
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
function rejectedPromise(reason = void 0) {
|
|
33
|
+
const promise = Promise.reject(reason);
|
|
34
|
+
promise.catch((error) => error);
|
|
35
|
+
return Object.assign(promise, {
|
|
36
|
+
status: "rejected",
|
|
37
|
+
reason
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
export { rejectedPromise, resolvedPromise };
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=promises.mjs.map
|