@leaflink/dom-testing-utils 2.3.0 → 3.0.1

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
@@ -17,7 +17,7 @@
17
17
  - [Global setup](#global-setup)
18
18
  - [Utilities](#utilities)
19
19
  - [`cleanupNoty`](#cleanupnoty)
20
- - [`waitForLoadingToFinish`](#waitforloadingtofinish)
20
+ - [`waitForLoading`](#waitforloading)
21
21
  - [`cleanupDropdowns`](#cleanupdropdowns)
22
22
  - [`assertAndDismissNoty`](#assertanddismissnoty)
23
23
  - [`getByDescriptionTerm`](#getbydescriptionterm)
@@ -39,7 +39,7 @@ In your test files you can import utility functions.
39
39
 
40
40
  ```ts
41
41
  import {
42
- waitForLoadingToFinish,
42
+ waitForLoading,
43
43
  cleanupDropdowns,
44
44
  assertAndDismissNoty,
45
45
  cleanupNoty,
@@ -95,17 +95,21 @@ Helper method to remove all noty alerts from the DOM.
95
95
 
96
96
  **Returns**: `void`
97
97
 
98
- ### `waitForLoadingToFinish`
98
+ ### `waitForLoading`
99
99
 
100
- 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.
100
+ Utility that waits for all loading elements to be removed from the DOM. The `data-test` argument defaults to `ll-loading` **or** `loading-spinner` if `testId` is not specified.
101
101
 
102
102
  | **Parameters** | **Type** | **Default** | **Summary** |
103
103
  | ----------- | ----------- | ----------- |----------- |
104
104
  | testId | `string` | `ll-loading` && `loading-spinner` |The data test ID to target. |
105
+ | timeout | number | 2000 | How long to wait for loading elements to be removed |
106
+ | failIfNull | boolean | false | Throws an error if no loading elements are found |
105
107
 
106
- **Returns**: `Promise<boolean>`
108
+ **Returns**: `Promise<void>`
107
109
 
108
- Will resolve or throw if the loaders stay in the DOM.
110
+ Will resolve if the loaders get removed before the timeout. Otherwise, will throw an error if the loaders are still in the DOM by the end of the timeout.
111
+
112
+ Setting `failIfNull` to `true` will cause an error to be thrown if no loading spinners are initially found in the DOM.
109
113
 
110
114
  ### `cleanupDropdowns`
111
115
 
package/dist/index.d.ts CHANGED
@@ -10,4 +10,4 @@ export { default as hasText } from './utils/hasText.js';
10
10
  export { default as isHTMLElement } from './utils/isHTMLElement.js';
11
11
  export { default as createMockApiUtils, RestMethod } from './utils/mockEndpoints.js';
12
12
  export { default as mockEndpoints } from './utils/mockEndpoints.js';
13
- export { default as waitForLoadingToFinish } from './utils/waitForLoadingToFinish.js';
13
+ export { default as waitForLoading } from './utils/waitForLoading.js';
package/dist/index.js CHANGED
@@ -10,5 +10,5 @@ export { default as hasText } from './utils/hasText.js';
10
10
  export { default as isHTMLElement } from './utils/isHTMLElement.js';
11
11
  export { default as createMockApiUtils } from './utils/mockEndpoints.js';
12
12
  export { default as mockEndpoints } from './utils/mockEndpoints.js';
13
- export { default as waitForLoadingToFinish } from './utils/waitForLoadingToFinish.js';
13
+ export { default as waitForLoading } from './utils/waitForLoading.js';
14
14
  //# 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,OAAO,IAAI,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AACxF,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAc,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"src/","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AACxF,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAc,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,2BAA2B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createFixtureGenerator.js","sourceRoot":"src/","sources":["utils/createFixtureGenerator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAI,SAAwC;IAKxF,SAAS,UAAU,CAAC,MAA2B,CAAC,EAAE,SAAS,GAAG,EAAE;QAC9D,+DAA+D;QAC/D,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;SACvB;aAAM,IAAI,GAAG,KAAK,CAAC,EAAE;YACpB,wGAAwG;YACxG,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC;SAC7B;aAAM;YACL,gEAAgE;YAChE,yCAAyC;YACzC,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;SACtE;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"createFixtureGenerator.js","sourceRoot":"src/","sources":["utils/createFixtureGenerator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAI,SAAwC;IAKxF,SAAS,UAAU,CAAC,MAA2B,CAAC,EAAE,SAAS,GAAG,EAAE;QAC9D,+DAA+D;QAC/D,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;aAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;YACrB,wGAAwG;YACxG,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,gEAAgE;YAChE,yCAAyC;YACzC,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1,16 @@
1
+ export interface WaitForLoadingArgs {
2
+ /**
3
+ * The value of the `data-test-id` attribute for the loading element(s).
4
+ */
5
+ testId?: string | RegExp;
6
+ timeout?: number;
7
+ /**
8
+ * If true, will fail the test if no loading elements are found.
9
+ */
10
+ failIfNull?: boolean;
11
+ }
12
+ /**
13
+ * Utility to wait for one or more loading elements to be removed from the DOM.
14
+ */
15
+ declare function waitForLoading({ testId, timeout, failIfNull, }?: WaitForLoadingArgs): Promise<void>;
16
+ export default waitForLoading;
@@ -0,0 +1,14 @@
1
+ import { screen, waitForElementToBeRemoved } from '@testing-library/vue';
2
+ import { nextTick } from 'vue';
3
+ /**
4
+ * Utility to wait for one or more loading elements to be removed from the DOM.
5
+ */
6
+ async function waitForLoading({ testId = /stash-loading|ll-loading|loading-spinner/, timeout = 2000, failIfNull = false, } = {}) {
7
+ await nextTick(); // wait for loading spinner(s) to be rendered
8
+ if (!failIfNull && screen.queryAllByTestId(testId).length > 0) {
9
+ return waitForElementToBeRemoved(() => [...screen.queryAllByTestId(testId)], { timeout });
10
+ }
11
+ return Promise.resolve();
12
+ }
13
+ export default waitForLoading;
14
+ //# sourceMappingURL=waitForLoading.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"waitForLoading.js","sourceRoot":"src/","sources":["utils/waitForLoading.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAgB/B;;GAEG;AACH,KAAK,UAAU,cAAc,CAAC,EAC5B,MAAM,GAAG,0CAA0C,EACnD,OAAO,GAAG,IAAI,EACd,UAAU,GAAG,KAAK,MACI,EAAE;IACxB,MAAM,QAAQ,EAAE,CAAC,CAAC,6CAA6C;IAE/D,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9D,OAAO,yBAAyB,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC3B,CAAC;AAED,eAAe,cAAc,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leaflink/dom-testing-utils",
3
- "version": "2.3.0",
3
+ "version": "3.0.1",
4
4
  "description": "Frontend DOM testing utilities",
5
5
  "engines": {
6
6
  "node": ">=16",
@@ -1,8 +0,0 @@
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
- */
8
- export default function waitForLoadingToFinish(textMatch?: RegExp): Promise<void>;
@@ -1,12 +0,0 @@
1
- import { screen, waitForElementToBeRemoved } from '@testing-library/vue';
2
- /**
3
- * Utility to wait for loading to complete. Need to add a `data-test` to any
4
- * loading elements. Defaults to `ll-loading` OR `loading-spinner` if test ID is not specified.
5
- *
6
- * @param {string} testId - The data test ID to target
7
- * @returns {Promise<boolean>} - Will resolve or throw if the loaders stay in the DOM.
8
- */
9
- export default function waitForLoadingToFinish(textMatch = /ll-loading|loading-spinner/) {
10
- return waitForElementToBeRemoved(() => [...screen.queryAllByTestId(textMatch)], { timeout: 2000 });
11
- }
12
- //# sourceMappingURL=waitForLoadingToFinish.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"waitForLoadingToFinish.js","sourceRoot":"src/","sources":["utils/waitForLoadingToFinish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,SAAS,GAAG,4BAA4B;IACrF,OAAO,yBAAyB,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AACrG,CAAC"}