Skip to content

Commit 065f31b

Browse files
committed
feat: update dom testing library (typings)
BREAKING CHANGE: - wait has been renamed to waitFor - waitForElement has been removed in favor of waitFor see https://github.com/testing-library/dom-testing-library/releases/tag/v7.0.0 for more info - waitForDomChange has been removed in favor of waitFor see https://github.com/testing-library/dom-testing-library/releases/tag/v7.0.0 for more info
1 parent bd5f5e6 commit 065f31b

File tree

8 files changed

+52
-179
lines changed

8 files changed

+52
-179
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
"@angular/router": "^9.0.3",
3636
"@ngrx/store": "^9.0.0-rc.0",
3737
"@phenomnomnominal/tsquery": "^3.0.0",
38-
"@testing-library/dom": "^7.0.0-beta.4",
38+
"@testing-library/dom": "^7.1.1",
3939
"@testing-library/user-event": "^8.1.0",
4040
"core-js": "^3.1.3",
4141
"rxjs": "^6.5.4",

projects/testing-library/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
"@angular/core": "^9.0.0"
3030
},
3131
"dependencies": {
32-
"@testing-library/dom": "^7.0.0-beta.4",
32+
"@testing-library/dom": "^7.1.0",
3333
"@testing-library/user-event": "^8.1.0",
3434
"@phenomnomnominal/tsquery": "^3.0.0",
3535
"tslint": "^5.16.0"

projects/testing-library/src/lib/models.ts

+4-29
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,7 @@
11
import { Type, DebugElement } from '@angular/core';
22
import { ComponentFixture } from '@angular/core/testing';
33
import { Routes } from '@angular/router';
4-
import {
5-
BoundFunction,
6-
FireObject,
7-
Queries,
8-
queries,
9-
wait,
10-
waitForElement,
11-
waitForElementToBeRemoved,
12-
waitForDomChange,
13-
} from '@testing-library/dom';
4+
import { BoundFunction, FireObject, Queries, queries, waitFor, waitForElementToBeRemoved } from '@testing-library/dom';
145
import { UserEvents } from './user-events';
156

167
export type RenderResultQueries<Q extends Queries = typeof queries> = { [P in keyof Q]: BoundFunction<Q[P]> };
@@ -67,22 +58,6 @@ export interface RenderResult<ComponentType, WrapperType = ComponentType>
6758
* Re-render the same component with different props.
6859
*/
6960
rerender: (componentProperties: Partial<ComponentType>) => void;
70-
/**
71-
* @deprecated `waitForDomChange` has been deprecated. Use `wait` instead: https://testing-library.com/docs/dom-testing-library/api-async#wait.
72-
* @description
73-
* Wait for the DOM to change.
74-
*
75-
* For more info see https://testing-library.com/docs/dom-testing-library/api-async#waitfordomchange
76-
*/
77-
waitForDomChange: typeof waitForDomChange;
78-
/**
79-
* @deprecated `waitForElement` has been deprecated. Use a `find*` query (preferred: https://testing-library.com/docs/dom-testing-library/api-queries#findby) or use `wait` instead (it's the same API, so you can find/replace): https://testing-library.com/docs/dom-testing-library/api-async#wait
80-
* @description
81-
* Wait for DOM elements to appear, disappear, or change.
82-
*
83-
* For more info see https://testing-library.com/docs/dom-testing-library/api-async#waitforelement
84-
*/
85-
waitForElement: typeof waitForElement;
8661
/**
8762
* @description
8863
* Wait for the removal of element(s) from the DOM.
@@ -92,11 +67,11 @@ export interface RenderResult<ComponentType, WrapperType = ComponentType>
9267
waitForElementToBeRemoved: typeof waitForElementToBeRemoved;
9368
/**
9469
* @description
95-
* When in need to wait for non-deterministic periods of time you can use wait, to wait for your expectations to pass.
70+
* When in need to wait for any period of time you can use waitFor, to wait for your expectations to pass.
9671
*
97-
* For more info see https://testing-library.com/docs/dom-testing-library/api-async#wait
72+
* For more info see https://testing-library.com/docs/dom-testing-library/api-async#waitFor
9873
*/
99-
wait: typeof wait;
74+
waitFor: typeof waitFor;
10075
}
10176

10277
export interface RenderComponentOptions<ComponentType, Q extends Queries = typeof queries> {

projects/testing-library/src/lib/testing-library.ts

+9-48
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,8 @@ import {
1010
FireObject,
1111
getQueriesForElement,
1212
prettyDOM,
13-
waitForDomChange,
14-
waitForElement,
13+
waitFor,
1514
waitForElementToBeRemoved,
16-
wait,
1715
} from '@testing-library/dom';
1816
import { RenderComponentOptions, RenderDirectiveOptions, RenderResult } from './models';
1917
import { createSelectOptions, createType, tab } from './user-events';
@@ -127,7 +125,7 @@ export async function render<SutType, WrapperType = SutType>(
127125
return result;
128126
};
129127

130-
function componentWait(
128+
function componentWaitFor<T>(
131129
callback,
132130
options: {
133131
container?: HTMLElement;
@@ -140,12 +138,13 @@ export async function render<SutType, WrapperType = SutType>(
140138
characterData: boolean;
141139
};
142140
} = { container: fixture.nativeElement, interval: 50 },
143-
): Promise<void> {
141+
): Promise<T> {
144142
const interval = setInterval(detectChanges, options.interval);
145-
return wait(callback, options).finally(() => clearInterval(interval));
143+
return waitFor<T>(callback, options).finally(() => clearInterval(interval));
146144
}
147145

148-
function componentWaitForDomChange(
146+
function componentWaitForElementToBeRemoved<T>(
147+
callback: () => T,
149148
options: {
150149
container?: HTMLElement;
151150
timeout?: number;
@@ -157,45 +156,9 @@ export async function render<SutType, WrapperType = SutType>(
157156
characterData: boolean;
158157
};
159158
} = { container: fixture.nativeElement, interval: 50 },
160-
): Promise<void> {
159+
): Promise<T> {
161160
const interval = setInterval(detectChanges, options.interval);
162-
return waitForDomChange(options).finally(() => clearInterval(interval));
163-
}
164-
165-
function componentWaitForElement<Result = HTMLElement>(
166-
callback: () => Result,
167-
options: {
168-
container?: HTMLElement;
169-
timeout?: number;
170-
interval?: number;
171-
mutationObserverOptions?: {
172-
subtree: boolean;
173-
childList: boolean;
174-
attributes: boolean;
175-
characterData: boolean;
176-
};
177-
} = { container: fixture.nativeElement, interval: 50 },
178-
): Promise<Result> {
179-
const interval = setInterval(detectChanges, options.interval);
180-
return waitForElement(callback, options).finally(() => clearInterval(interval));
181-
}
182-
183-
function componentWaitForElementToBeRemoved<Result = HTMLElement>(
184-
callback: () => Result,
185-
options: {
186-
container?: HTMLElement;
187-
timeout?: number;
188-
interval?: number;
189-
mutationObserverOptions?: {
190-
subtree: boolean;
191-
childList: boolean;
192-
attributes: boolean;
193-
characterData: boolean;
194-
};
195-
} = { container: fixture.nativeElement, interval: 50 },
196-
): Promise<Result> {
197-
const interval = setInterval(detectChanges, options.interval);
198-
return waitForElementToBeRemoved(callback, options).finally(() => clearInterval(interval));
161+
return waitForElementToBeRemoved<T>(callback, options).finally(() => clearInterval(interval));
199162
}
200163

201164
return {
@@ -209,9 +172,7 @@ export async function render<SutType, WrapperType = SutType>(
209172
type: createType(eventsWithDetectChanges),
210173
selectOptions: createSelectOptions(eventsWithDetectChanges),
211174
tab,
212-
wait: componentWait,
213-
waitForDomChange: componentWaitForDomChange,
214-
waitForElement: componentWaitForElement,
175+
waitFor: componentWaitFor,
215176
waitForElementToBeRemoved: componentWaitForElementToBeRemoved,
216177
...getQueriesForElement(fixture.nativeElement, queries),
217178
...eventsWithDetectChanges,

projects/testing-library/tests/wait-for-dom-change.spec.ts

-40
This file was deleted.

projects/testing-library/tests/wait-for-element.spec.ts

-37
This file was deleted.

projects/testing-library/tests/wait.spec.ts renamed to projects/testing-library/tests/wait-for.spec.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,22 @@ class FixtureComponent {
1818
}
1919

2020
test('waits for assertion to become true', async () => {
21-
const { queryByText, getByTestId, click, wait, getByText } = await render(FixtureComponent);
21+
const { queryByText, getByTestId, click, waitFor, getByText } = await render(FixtureComponent);
2222

2323
expect(queryByText('Success')).toBeNull();
2424

2525
click(getByTestId('button'));
2626

27-
await wait(() => getByText('Success'));
27+
await waitFor(() => getByText('Success'));
2828
getByText('Success');
2929
});
3030

3131
test('allows to override options', async () => {
32-
const { getByTestId, click, wait, getByText } = await render(FixtureComponent);
32+
const { getByTestId, click, waitFor, getByText } = await render(FixtureComponent);
3333

3434
click(getByTestId('button'));
3535

36-
await expect(wait(() => getByText('Success'), { timeout: 200 })).rejects.toThrow(
36+
await expect(waitFor(() => getByText('Success'), { timeout: 200 })).rejects.toThrow(
3737
/Unable to find an element with the text: Success/i,
3838
);
3939
});

yarn.lock

+33-19
Original file line numberDiff line numberDiff line change
@@ -991,13 +991,20 @@
991991
dependencies:
992992
regenerator-runtime "^0.13.2"
993993

994-
"@babel/runtime@^7.6.3", "@babel/runtime@^7.7.4", "@babel/runtime@^7.8.4":
994+
"@babel/runtime@^7.6.3", "@babel/runtime@^7.7.4":
995995
version "7.8.4"
996996
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.4.tgz#d79f5a2040f7caa24d53e563aad49cbc05581308"
997997
integrity sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ==
998998
dependencies:
999999
regenerator-runtime "^0.13.2"
10001000

1001+
"@babel/runtime@^7.9.2":
1002+
version "7.9.2"
1003+
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06"
1004+
integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==
1005+
dependencies:
1006+
regenerator-runtime "^0.13.4"
1007+
10011008
"@babel/template@^7.1.0", "@babel/template@^7.4.0", "@babel/template@^7.4.4":
10021009
version "7.4.4"
10031010
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237"
@@ -1525,15 +1532,15 @@
15251532
dependencies:
15261533
defer-to-connect "^1.0.1"
15271534

1528-
"@testing-library/dom@^7.0.0-beta.4":
1529-
version "7.0.0-beta.4"
1530-
resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.0.0-beta.4.tgz#611dc2110552e41d0ae8720a09261e229d77e991"
1531-
integrity sha512-Lv+wttj/aVnSvykV9Qw5BK60Na5IAjz75Sy5TYxdFLCakaCj4VXAtveg2pACqI6Dh0aqKF0oThq9KJKEhccUXw==
1535+
"@testing-library/dom@^7.1.1":
1536+
version "7.1.1"
1537+
resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.1.1.tgz#bf890c2468bd717ffd8b336a819686907fbe4daa"
1538+
integrity sha512-CxspAIntyK2joLUJChOZgnwx7xBxdBC8ugwP+Z49Dd9O3sGVs0wHkOUOsfBVXHgBjmdZk8E3SyHZVrMRd9O1sA==
15321539
dependencies:
1533-
"@babel/runtime" "^7.8.4"
1534-
"@types/testing-library__dom" "^6.12.1"
1540+
"@babel/runtime" "^7.9.2"
1541+
"@types/testing-library__dom" "^7.0.0"
15351542
aria-query "^4.0.2"
1536-
dom-accessibility-api "^0.3.0"
1543+
dom-accessibility-api "^0.4.2"
15371544
pretty-format "^25.1.0"
15381545

15391546
"@testing-library/jest-dom@^4.1.0":
@@ -1712,12 +1719,12 @@
17121719
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e"
17131720
integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==
17141721

1715-
"@types/testing-library__dom@^6.12.1":
1716-
version "6.12.1"
1717-
resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-6.12.1.tgz#37af28fae051f9e3feed5684535b1540c97ae28b"
1718-
integrity sha512-cgqnEjxKk31tQt29j4baSWaZPNjQf3bHalj2gcHQTpW5SuHRal76gOpF0vypeEo6o+sS5inOvvNdzLY0B3FB2A==
1722+
"@types/testing-library__dom@^7.0.0":
1723+
version "7.0.0"
1724+
resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-7.0.0.tgz#c0fb7d1c2495a3d26f19342102142d47500f0319"
1725+
integrity sha512-1TEPWyqQ6IQ7R1hCegZmFSA3KrBQjdzJW7yC9ybpRcFst5XuPOqBGNr0mTAKbxwI/TrTyc1skeyLJrpcvAf93w==
17191726
dependencies:
1720-
pretty-format "^24.3.0"
1727+
pretty-format "^25.1.0"
17211728

17221729
"@types/webpack-sources@^0.1.5":
17231730
version "0.1.5"
@@ -3731,7 +3738,7 @@ core-js-compat@^3.6.0:
37313738
browserslist "^4.8.3"
37323739
semver "7.0.0"
37333740

3734-
core-js-pure@^3.0.0:
3741+
core-js-pure@^3.0.0, core-js-pure@^3.6.4:
37353742
version "3.6.4"
37363743
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.4.tgz#4bf1ba866e25814f149d4e9aaa08c36173506e3a"
37373744
integrity sha512-epIhRLkXdgv32xIUFaaAry2wdxZYBi6bgM7cB136dzzXXa+dFyRLTZeLUJxnd8ShrmyVXBub63n2NHo2JAt8Cw==
@@ -4407,10 +4414,12 @@ dns-txt@^2.0.2:
44074414
dependencies:
44084415
buffer-indexof "^1.0.0"
44094416

4410-
dom-accessibility-api@^0.3.0:
4411-
version "0.3.0"
4412-
resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.3.0.tgz#511e5993dd673b97c87ea47dba0e3892f7e0c983"
4413-
integrity sha512-PzwHEmsRP3IGY4gv/Ug+rMeaTIyTJvadCb+ujYXYeIylbHJezIyNToe8KfEgHTCEYyC+/bUghYOGg8yMGlZ6vA==
4417+
dom-accessibility-api@^0.4.2:
4418+
version "0.4.2"
4419+
resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.4.2.tgz#e19ef39da9a5858f6f9af225113f6ed302ccdf70"
4420+
integrity sha512-vKxUcEtM9bVB7eDv7jTAuOLl5L0724Pk6iHxz8KUIgrWl53TTA6MuZ0g/bUrnEx3Gsf9SIJ1LiVtjfo0rg7iMA==
4421+
dependencies:
4422+
core-js-pure "^3.6.4"
44144423

44154424
dom-serializer@0:
44164425
version "0.2.2"
@@ -10103,7 +10112,7 @@ pretty-format@^24.0.0, pretty-format@^24.8.0:
1010310112
ansi-styles "^3.2.0"
1010410113
react-is "^16.8.4"
1010510114

10106-
pretty-format@^24.3.0, pretty-format@^24.9.0:
10115+
pretty-format@^24.9.0:
1010710116
version "24.9.0"
1010810117
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9"
1010910118
integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==
@@ -10663,6 +10672,11 @@ regenerator-runtime@^0.13.2:
1066310672
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447"
1066410673
integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==
1066510674

10675+
regenerator-runtime@^0.13.4:
10676+
version "0.13.5"
10677+
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697"
10678+
integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==
10679+
1066610680
regenerator-transform@^0.14.0:
1066710681
version "0.14.1"
1066810682
resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb"

0 commit comments

Comments
 (0)