@leaflink/dom-testing-utils 1.1.1 → 1.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/README.md CHANGED
@@ -1,44 +1,190 @@
1
1
  # @leaflink/dom-testing-utils
2
2
 
3
- Leaflink repository to manage test utilities to be shared across front-end applications.
3
+ > Leaflink repository to manage test utilities to be shared across front-end applications.
4
+
5
+ [![version](https://img.shields.io/npm/v/@leaflink/dom-testing-utils.svg)](http://npm.im/@leaflink/dom-testing-utils)
6
+ [![downloads](https://img.shields.io/npm/dm/@leaflink/dom-testing-utils.svg)](http://npm-stat.com/charts.html?package=@leaflink/dom-testing-utils&from=2015-08-01)
7
+ [![MIT License](https://img.shields.io/npm/l/@leaflink/dom-testing-utils.svg)](http://opensource.org/licenses/MIT)
8
+ [![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)
9
+ [![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/)
10
+
11
+ <!-- START doctoc generated TOC please keep comment here to allow auto update -->
12
+ <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
13
+
14
+ - [Installation](#installation)
15
+ - [Usage](#usage)
16
+ - [Global setup](#global-setup)
17
+ - [Setup file](#setup-file)
18
+ - [`cleanupNoty`](#cleanupnoty)
19
+ - [`waitForLoadingToFinish`](#waitforloadingtofinish)
20
+ - [`cleanupDropdowns`](#cleanupdropdowns)
21
+ - [`assertAndDismissNoty`](#assertanddismissnoty)
22
+ - [`createFixtureGenerator`](#createfixturegenerator)
23
+ - [Mocking API Endpoints](#mocking-api-endpoints)
24
+
25
+ <!-- END doctoc generated TOC please keep comment here to allow auto update -->
4
26
 
5
27
  ## Installation
6
28
 
7
- ```bash
8
- $ npm install @leaflink/dom-testing-utils
29
+ ```sh
30
+ npm install --save-dev @leaflink/dom-testing-utils
9
31
  ```
10
32
 
11
33
  ## Usage
12
34
 
35
+ In your `*.spec.(ts|js)` files you can import utility functions.
36
+
37
+ ```ts
38
+ import {
39
+ waitForLoadingToFinish,
40
+ cleanupDropdowns,
41
+ assertAndDismissNoty,
42
+ cleanupNoty,
43
+ createFixtureGenerator,
44
+ } from '@leaflink/dom-testing-utils';
45
+
46
+ it('...', () => {
47
+ cleanupNoty();
48
+ });
49
+ ```
50
+
51
+ There's also shared setup files you can extend from.
52
+
13
53
  ### Global setup
14
54
 
15
- Add the following line to your `vite.config.js`
55
+ Add the following line to your `vite.config.js`:
16
56
 
17
57
  ```js
18
58
  globalSetup: 'node_modules/@leaflink/dom-testing-utils/dist/global-setup.js',
19
59
  ```
20
60
 
21
- ### File setup
61
+ This will run once *before everything*. See <https://vitest.dev/config/#globalsetup>.
22
62
 
23
- Add the following line to your `vite.config.js`
63
+ ### Setup file
64
+
65
+ Add the following line to your `vite.config.js`:
24
66
 
25
67
  ```js
26
68
  setupFiles: ['node_modules/@leaflink/dom-testing-utils/dist/setup-env.js'],
27
69
  ```
28
70
 
29
- ### Utils
71
+ This will be run once before *each* test file. See <https://vitest.dev/config/#setupfiles>.
72
+
73
+ ### `cleanupNoty`
74
+
75
+ Helper method to remove all noty alerts from the DOM.
76
+
77
+ **Parameters**: None
78
+
79
+ **Returns**: `void`
80
+
81
+ ### `waitForLoadingToFinish`
82
+
83
+ Utility to wait for loading to complete. Need to add a `data-test` to any loading elements. Defaults to `ll-loading` **or** `loading-spinner` if `testId` is not specified.
84
+
85
+ | **Parameters** | **Type** | **Default** | **Summary** |
86
+ | ----------- | ----------- | ----------- |----------- |
87
+ | testId | `string` | `ll-loading` && `loading-spinner` |The data test ID to target. |
88
+
89
+ **Returns**: `Promise<boolean>`
90
+
91
+ Will resolve or throw if the loaders stay in the DOM.
92
+
93
+ ### `cleanupDropdowns`
94
+
95
+ Helper method to remove all floating Stash Dropdown elements from the DOM.
96
+
97
+ **Parameters**: None
98
+
99
+ **Returns**: `void`
100
+
101
+ ### `assertAndDismissNoty`
102
+
103
+ Helper to assert and manually dismiss a notification. This is useful in scenarios where cleanupNoty() does not work as expected, such as when validating error messages in test suites.
104
+
105
+ | **Parameters** | **Type** | **Default** | **Summary** |
106
+ | ----------- | ----------- | ----------- |----------- |
107
+ | text | `string` | *Required* | Expected notification text. |
108
+
109
+ **Returns**: `void`
110
+
111
+ ### `createFixtureGenerator`
30
112
 
31
- In your `*.spec.(ts|js)` file you can import utility functions
113
+ Higher order function that takes a method whose responsibility is to create a **single** data fixture object and returns a new generator function that allows you to create 1 or more of those fixtures. Fixture generator function that's returned supports passing optional `num` and `overrides` params.
114
+
115
+ | **Parameters** | **Type** | **Default** | **Summary** |
116
+ | ----------- | ----------- | ----------- |----------- |
117
+ | `fixtureFn` | `function` | *Required* | Method that generates and returns a single data object. |
118
+
119
+ **Returns**
32
120
 
33
121
  ```ts
34
- import { cleanupNoty } from '@leaflink/dom-testing-utils';
122
+ (num?, overrides?) => Array<{[key: string]: any}> | {[key: string]: any}
123
+ // OR
124
+ (overrides?) => {[key: string]: any}
125
+ ```
35
126
 
36
- it('', () => {
37
- cleanupNoty();
127
+ A new generator function that accepts a number & overrides where:
128
+
129
+ - `num` = The number of fake data objects to generate. Defaults to 1
130
+ - `overrides` = Specific attributes you want to override in each data fixture object.
131
+
132
+ When calling the returned function, you'll get an array OR object of fixture data (It will be a ** single object** if `num = 1`).
133
+
134
+ **Examples**
135
+
136
+ Quick example:
137
+
138
+ ```ts
139
+ const generateInvoice = (overrides) => ({ id: uuid(), balance: 15799, classification: "Adult Use", ...overrides});
140
+ const generateInvoices = createFixtureGenerator(generateInvoice);
141
+
142
+ generateInvoices()
143
+ // => Single invoice object
144
+
145
+ generateInvoices(1)
146
+ // => Single invoice object
147
+
148
+ generateInvoices(1, { foo: 'bar' })
149
+ // => Single invoice object, override `foo` to equal `'bar'`
150
+
151
+ generateInvoices({ foo: 'bar' })
152
+ // => Single invoice object, override `foo` to equal `'bar'`
153
+
154
+ generateInvoices(10)
155
+ // => Array of 10 invoice objects
156
+
157
+ generateInvoices(10, { foo: 'bar' })
158
+ // => Array of 10 invoice objects, override `foo` to equal `'bar'` in each
159
+ ```
160
+
161
+ Full example:
162
+
163
+ ```ts
164
+ // tests/fixtures/products.ts
165
+ import { faker } from '@faker-js/faker';
166
+ import { createFixtureGenerator } from '@leaflink/dom-testing-utils';
167
+
168
+ export const generateProduct = (overrides = {}) => ({
169
+ sku: git.commitSha(),
170
+ name: faker.commerce.productName(),
171
+ quantity: faker.random.number(100),
172
+ cases: faker.random.number(10),
173
+ ...overrides,
38
174
  });
175
+
176
+ export default createFixtureGenerator(generateProduct);
177
+
178
+ // services/api/products.ts
179
+ import generateProducts from '@/tests/fixtures/products';
180
+
181
+ // ...
182
+ const mockProducts = generateProducts(10, { cases: 25 })
183
+ // ...
39
184
  ```
40
185
 
41
- ### Mocking Endpoints
186
+ ### Mocking API Endpoints
187
+
42
188
  In order to mock API endpoints that your tests interact with, you can get a set of mocking functions from `createMockApiUtils`.
43
189
 
44
190
  ```ts
@@ -61,7 +207,7 @@ To mock an endpoint with simple return data
61
207
  ```ts
62
208
  mockGetData('/relative-url', myMockObj);
63
209
  ```
64
- or you can customize the response
210
+ or you can customize the response
65
211
  ```ts
66
212
  mockGetEndpoint('/relative-url', (req, res, ctx) => {
67
213
  if (someConditional()) {
@@ -70,4 +216,4 @@ or you can customize the response
70
216
  res(ctx.json(false));
71
217
  }
72
218
  });
73
- ```
219
+ ```
package/dist/index.d.ts CHANGED
@@ -1,5 +1,50 @@
1
+ /**
2
+ * Utility to wait for loading to complete. Need to add a `data-test` to any
3
+ * loading elements. Defaults to `ll-loading` OR `loading-spinner` if test ID is not specified.
4
+ *
5
+ * @param {string} testId - The data test ID to target
6
+ * @returns {Promise<boolean>} - Will resolve or throw if the loaders stay in the DOM.
7
+ */
1
8
  export declare function waitForLoadingToFinish(textMatch?: RegExp): Promise<void>;
9
+ /**
10
+ * Helper method to remove all noty alerts from the DOM.
11
+ *
12
+ * @returns void
13
+ */
2
14
  export declare function cleanupNoty(): void;
3
15
  export declare function cleanupDropdowns(): void;
16
+ /**
17
+ * Helper to assert and manually dismiss a notification. This is useful in scenarios where
18
+ * cleanupNoty() does not work as expected, such as when validating error messages in test suites
19
+ *
20
+ * @param {string | RegExp} text - expected notification text
21
+ *
22
+ * @returns void
23
+ */
4
24
  export declare function assertAndDismissNoty(text: string): Promise<void>;
25
+ /**
26
+ * Higher order function that takes a method whose responsibility is to create a
27
+ * **single** data fixture object and returns a new generator function that
28
+ * allows you to create 1 or many of those fixtures. Fixture generator function
29
+ * that's returned supports passing optional `num` and `overrides` params.
30
+ *
31
+ * @example
32
+ *
33
+ * const generateInvoice = (overrides) => ({ id: uuid(), balance: 15799, classification: "Adult Use", ...overrides});
34
+ * const generateInvoices = createFixtureGenerator(generateInvoice);
35
+ *
36
+ * generateInvoices() // => Single invoice object
37
+ * generateInvoices(1) // => Single invoice object
38
+ * generateInvoices(1, { foo: 'bar' }) // => Single invoice object, override `foo` to equal `'bar'`
39
+ * generateInvoices({ foo: 'bar' }) // => Single invoice object, override `foo` to equal `'bar'`
40
+ * generateInvoices(10) // => Array of 10 invoice objects
41
+ * generateInvoices(10, { foo: 'bar' }) // => Array of 10 invoice objects, override `foo` to equal `'bar'` in each
42
+ *
43
+ * @param {function} fixtureFn - Method that generates a JSON data fixture.
44
+ * @returns {function}
45
+ * @returns {array|object} - Array of fixture objects or single object if n = 1.
46
+ */
47
+ export declare function createFixtureGenerator(fixtureFn: any): (num?: number | {
48
+ [key: string]: any;
49
+ }, overrides?: {}) => any;
5
50
  export * from './api';
package/dist/index.js CHANGED
@@ -1,8 +1,20 @@
1
1
  import { screen, waitForElementToBeRemoved } from '@testing-library/vue';
2
2
  import { default as userEvent } from '@testing-library/user-event';
3
+ /**
4
+ * Utility to wait for loading to complete. Need to add a `data-test` to any
5
+ * loading elements. Defaults to `ll-loading` OR `loading-spinner` if test ID is not specified.
6
+ *
7
+ * @param {string} testId - The data test ID to target
8
+ * @returns {Promise<boolean>} - Will resolve or throw if the loaders stay in the DOM.
9
+ */
3
10
  export function waitForLoadingToFinish(textMatch = /ll\-loading|loading\-spinner/) {
4
11
  return waitForElementToBeRemoved(() => [...screen.queryAllByTestId(textMatch)], { timeout: 2000 });
5
12
  }
13
+ /**
14
+ * Helper method to remove all noty alerts from the DOM.
15
+ *
16
+ * @returns void
17
+ */
6
18
  export function cleanupNoty() {
7
19
  document
8
20
  .querySelectorAll('.noty_bar')
@@ -13,10 +25,51 @@ export function cleanupDropdowns() {
13
25
  .querySelectorAll('.mount-point-container')
14
26
  .forEach((elem) => elem.parentNode?.removeChild(elem));
15
27
  }
28
+ /**
29
+ * Helper to assert and manually dismiss a notification. This is useful in scenarios where
30
+ * cleanupNoty() does not work as expected, such as when validating error messages in test suites
31
+ *
32
+ * @param {string | RegExp} text - expected notification text
33
+ *
34
+ * @returns void
35
+ */
16
36
  export async function assertAndDismissNoty(text) {
17
37
  const noty = await screen.findByText(text);
18
38
  expect(noty).toBeInTheDocument();
19
39
  await userEvent.click(noty);
20
40
  }
41
+ /**
42
+ * Higher order function that takes a method whose responsibility is to create a
43
+ * **single** data fixture object and returns a new generator function that
44
+ * allows you to create 1 or many of those fixtures. Fixture generator function
45
+ * that's returned supports passing optional `num` and `overrides` params.
46
+ *
47
+ * @example
48
+ *
49
+ * const generateInvoice = (overrides) => ({ id: uuid(), balance: 15799, classification: "Adult Use", ...overrides});
50
+ * const generateInvoices = createFixtureGenerator(generateInvoice);
51
+ *
52
+ * generateInvoices() // => Single invoice object
53
+ * generateInvoices(1) // => Single invoice object
54
+ * generateInvoices(1, { foo: 'bar' }) // => Single invoice object, override `foo` to equal `'bar'`
55
+ * generateInvoices({ foo: 'bar' }) // => Single invoice object, override `foo` to equal `'bar'`
56
+ * generateInvoices(10) // => Array of 10 invoice objects
57
+ * generateInvoices(10, { foo: 'bar' }) // => Array of 10 invoice objects, override `foo` to equal `'bar'` in each
58
+ *
59
+ * @param {function} fixtureFn - Method that generates a JSON data fixture.
60
+ * @returns {function}
61
+ * @returns {array|object} - Array of fixture objects or single object if n = 1.
62
+ */
63
+ export function createFixtureGenerator(fixtureFn) {
64
+ return (num = 1, overrides = {}) => {
65
+ // if passed a number of 1 or an object, we're only going to generate a
66
+ // single data object and treat `num` as the overrides.
67
+ if (typeof num !== 'number' || num === 1) {
68
+ return fixtureFn(num);
69
+ }
70
+ // Otherwise, let's generate however many requested data objects
71
+ return Array.apply(null, Array(num)).map(() => fixtureFn(overrides));
72
+ };
73
+ }
21
74
  export * from './api';
22
75
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"src/","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAEnE,MAAM,UAAU,sBAAsB,CACpC,SAAS,GAAG,8BAA8B;IAE1C,OAAO,yBAAyB,CAC9B,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,EAC7C,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,QAAQ;SACL,gBAAgB,CAAC,WAAW,CAAC;SAC7B,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,QAAQ;SACL,gBAAgB,CAAC,wBAAwB,CAAC;SAC1C,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAY;IACrD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,CAAC;IAEjC,MAAM,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,cAAc,OAAO,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"src/","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,SAAS,GAAG,8BAA8B;IAE1C,OAAO,yBAAyB,CAC9B,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,EAC7C,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW;IACzB,QAAQ;SACL,gBAAgB,CAAC,WAAW,CAAC;SAC7B,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,QAAQ;SACL,gBAAgB,CAAC,wBAAwB,CAAC;SAC1C,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAY;IACrD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,CAAC;IAEjC,MAAM,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAAS;IAC9C,OAAO,CAAC,MAAqC,CAAC,EAAE,SAAS,GAAG,EAAE,EAAE,EAAE;QAChE,uEAAuE;QACvE,uDAAuD;QACvD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,CAAC,EAAE;YACxC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;SACvB;QAED,gEAAgE;QAChE,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC;AACJ,CAAC;AAED,cAAc,OAAO,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,32 @@
1
+ import { createFixtureGenerator } from "./index";
2
+ describe('createFixtureGenerator()', () => {
3
+ it('returns a function that can generate an array of data objects', () => {
4
+ const generator = (overrides) => ({
5
+ foo: 'bar',
6
+ bar: 'baz',
7
+ ...overrides,
8
+ });
9
+ expect(createFixtureGenerator(generator)(5)).toEqual([
10
+ { foo: 'bar', bar: 'baz' },
11
+ { foo: 'bar', bar: 'baz' },
12
+ { foo: 'bar', bar: 'baz' },
13
+ { foo: 'bar', bar: 'baz' },
14
+ { foo: 'bar', bar: 'baz' },
15
+ ]);
16
+ expect(createFixtureGenerator(generator)(3, { bar: 'yak' })).toEqual([
17
+ { foo: 'bar', bar: 'yak' },
18
+ { foo: 'bar', bar: 'yak' },
19
+ { foo: 'bar', bar: 'yak' },
20
+ ]);
21
+ });
22
+ it('returns a function that can generate a single data object', () => {
23
+ const generator = (overrides) => ({
24
+ foo: 'bar',
25
+ bar: 'baz',
26
+ ...overrides,
27
+ });
28
+ expect(createFixtureGenerator(generator)()).toEqual({ foo: 'bar', bar: 'baz' });
29
+ expect(createFixtureGenerator(generator)({ bar: 'yak' })).toEqual({ foo: 'bar', bar: 'yak' });
30
+ });
31
+ });
32
+ //# sourceMappingURL=index.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.spec.js","sourceRoot":"src/","sources":["index.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEjD,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAChC,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;YACV,GAAG,SAAS;SACb,CAAC,CAAC;QAEH,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACnD,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE;YAC1B,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE;YAC1B,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE;YAC1B,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE;YAC1B,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE;SAC3B,CAAC,CAAA;QAEF,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAClE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE;YAC1B,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE;YAC1B,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE;SAC3B,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAChC,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;YACV,GAAG,SAAS;SACb,CAAC,CAAC;QAEH,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QAEhF,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/F,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
package/dist/setup-env.js CHANGED
@@ -40,4 +40,6 @@ const IntersectionObserverMock = vi.fn(() => ({
40
40
  }));
41
41
  vi.stubGlobal('IntersectionObserver', IntersectionObserverMock);
42
42
  vi.stubGlobal('fetch', vi.fn().mockResolvedValue({ json: vi.fn().mockResolvedValue({}) }));
43
+ // https://github.com/jsdom/jsdom/issues/1695
44
+ Element.prototype.scrollIntoView = vi.fn();
43
45
  //# sourceMappingURL=setup-env.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup-env.js","sourceRoot":"src/","sources":["setup-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,2BAA2B,CAAC;AAEnC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC;AAEzC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;AAEjD,SAAS,CAAC,GAAG,EAAE;IACb,mBAAmB;IACnB,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;IAE9B,mBAAmB;IACnB,MAAM,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAC9C,EAAE,EACF;QACE,GAAG,MAAM,CAAC,yBAAyB,CAAC,iBAAiB,CAAC;QACtD,MAAM,EAAE;YACN,YAAY,EAAE,IAAI;YAClB,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;SACf;QACD,IAAI,EAAE;YACJ,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE;gBACL,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;aACjB;SACF;KACF,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IAEtB,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE;QACjC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,GAAG,EAAE;IACZ,MAAM,CAAC,MAAM,CAAC,QAAQ,GAAG,iBAAiB,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEH,MAAM,wBAAwB,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5C,IAAI,IAAI;QACN,OAAO;IACT,CAAC;IACD,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;IACnB,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;IAChB,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE;IACpB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;CACnB,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,UAAU,CAAC,sBAAsB,EAAE,wBAAwB,CAAC,CAAC;AAEhE,EAAE,CAAC,UAAU,CACX,OAAO,EACP,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC,CACnE,CAAC"}
1
+ {"version":3,"file":"setup-env.js","sourceRoot":"src/","sources":["setup-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,2BAA2B,CAAC;AAEnC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC;AAEzC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;AAEjD,SAAS,CAAC,GAAG,EAAE;IACb,mBAAmB;IACnB,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;IAE9B,mBAAmB;IACnB,MAAM,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAC9C,EAAE,EACF;QACE,GAAG,MAAM,CAAC,yBAAyB,CAAC,iBAAiB,CAAC;QACtD,MAAM,EAAE;YACN,YAAY,EAAE,IAAI;YAClB,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;SACf;QACD,IAAI,EAAE;YACJ,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE;gBACL,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;aACjB;SACF;KACF,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IAEtB,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE;QACjC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,GAAG,EAAE;IACZ,MAAM,CAAC,MAAM,CAAC,QAAQ,GAAG,iBAAiB,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEH,MAAM,wBAAwB,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5C,IAAI,IAAI;QACN,OAAO;IACT,CAAC;IACD,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;IACnB,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;IAChB,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE;IACpB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;CACnB,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,UAAU,CAAC,sBAAsB,EAAE,wBAAwB,CAAC,CAAC;AAEhE,EAAE,CAAC,UAAU,CACX,OAAO,EACP,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC,CACnE,CAAC;AAEF,6CAA6C;AAC7C,OAAO,CAAC,SAAS,CAAC,cAAc,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leaflink/dom-testing-utils",
3
- "version": "1.1.1",
3
+ "version": "1.2.0",
4
4
  "description": "Frontend DOM testing utilities",
5
5
  "engines": {
6
6
  "node": ">=16",