Add @testing-library/jest-dom (#37792)

* Add @testing-library/jest-dom

* Fix global test

* Update jest-dom typings for (future) v5

- Remove module typings
- Sync global typings with latest version

Apply suggestions from code review

Co-Authored-By: Sebastian Silbermann <silbermann.sebastian@gmail.com>

Co-authored-by: Sebastian Silbermann <silbermann.sebastian@gmail.com>
This commit is contained in:
John Gozde
2020-01-21 14:42:30 +00:00
committed by John Reilly
co-authored by Sebastian Silbermann
parent 4ab4fa9c80
commit 903eaaf06d
4 changed files with 127 additions and 0 deletions
+36
View File
@@ -0,0 +1,36 @@
// Type definitions for @testing-library/jest-dom 5.0
// Project: https://github.com/testing-library/jest-dom
// Definitions by: Ernesto García <https://github.com/gnapse>
// John Gozde <https://github.com/jgoz>
// Seth Macpherson <https://github.com/smacpherson64>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 3.0
/// <reference types="jest" />
declare namespace jest {
interface Matchers<R, T> {
/**
* @deprecated
*/
toBeInTheDOM(container?: HTMLElement | SVGElement): R;
toBeInTheDocument(): R;
toBeVisible(): R;
toBeEmpty(): R;
toBeDisabled(): R;
toBeEnabled(): R;
toBeInvalid(): R;
toBeRequired(): R;
toBeValid(): R;
toContainElement(element: HTMLElement | SVGElement | null): R;
toContainHTML(htmlText: string): R;
toHaveAttribute(attr: string, value?: unknown): R;
toHaveClass(...classNames: string[]): R;
toHaveFocus(): R;
toHaveFormValues(expectedValues: Record<string, unknown>): R;
toHaveStyle(css: string): R;
toHaveTextContent(text: string | RegExp, options?: { normalizeWhitespace: boolean }): R;
toHaveValue(value?: string | string[] | number): R;
toBeChecked(): R;
}
}
@@ -0,0 +1,65 @@
const element: HTMLElement = document.body;
expect(element).toBeInTheDOM();
expect(element).toBeInTheDOM(document.body);
expect(element).toBeInTheDocument();
expect(element).toBeVisible();
expect(element).toBeEmpty();
expect(element).toBeDisabled();
expect(element).toBeEnabled();
expect(element).toBeInvalid();
expect(element).toBeRequired();
expect(element).toBeValid();
expect(element).toContainElement(document.body);
expect(element).toContainElement(null);
expect(element).toContainHTML('body');
expect(element).toHaveAttribute('attr');
expect(element).toHaveAttribute('attr', true);
expect(element).toHaveAttribute('attr', 'yes');
expect(element).toHaveClass();
expect(element).toHaveClass('cls1');
expect(element).toHaveClass('cls1', 'cls2', 'cls3', 'cls4');
expect(element).toHaveFocus();
expect(element).toHaveFormValues({ foo: 'bar', baz: 1 });
expect(element).toHaveStyle('display: block');
expect(element).toHaveTextContent('Text');
expect(element).toHaveTextContent(/Text/);
expect(element).toHaveTextContent('Text', { normalizeWhitespace: true });
expect(element).toHaveTextContent(/Text/, { normalizeWhitespace: true });
expect(element).toHaveValue();
expect(element).toHaveValue('str');
expect(element).toHaveValue(['str1', 'str2']);
expect(element).toHaveValue(1);
expect(element).toBeChecked();
expect(element).not.toBeInTheDOM();
expect(element).not.toBeInTheDOM(document.body);
expect(element).not.toBeInTheDocument();
expect(element).not.toBeVisible();
expect(element).not.toBeEmpty();
expect(element).not.toBeDisabled();
expect(element).not.toBeEnabled();
expect(element).not.toBeInvalid();
expect(element).not.toBeRequired();
expect(element).not.toBeValid();
expect(element).not.toContainElement(document.body);
expect(element).not.toContainElement(null);
expect(element).not.toContainHTML('body');
expect(element).not.toHaveAttribute('attr');
expect(element).not.toHaveAttribute('attr', true);
expect(element).not.toHaveAttribute('attr', 'yes');
expect(element).not.toHaveClass();
expect(element).not.toHaveClass('cls1');
expect(element).not.toHaveClass('cls1', 'cls2', 'cls3', 'cls4');
expect(element).not.toHaveFocus();
expect(element).not.toHaveFormValues({ foo: 'bar', baz: 1 });
expect(element).not.toHaveStyle('display: block');
expect(element).not.toHaveTextContent('Text');
expect(element).not.toHaveTextContent(/Text/);
expect(element).not.toHaveTextContent('Text', { normalizeWhitespace: true });
expect(element).not.toHaveTextContent(/Text/, { normalizeWhitespace: true });
expect(element).not.toHaveValue();
expect(element).not.toHaveValue('str');
expect(element).not.toHaveValue(['str1', 'str2']);
expect(element).not.toHaveValue(1);
expect(element).not.toBeChecked();
@@ -0,0 +1,23 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": ["es6", "dom"],
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"baseUrl": "../",
"typeRoots": ["../"],
"target": "es6",
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true,
"paths": {
"@testing-library/jest-dom": ["testing-library__jest-dom"]
}
},
"files": [
"index.d.ts",
"test/testing-library__jest-dom-global-tests.ts"
]
}
@@ -0,0 +1,3 @@
{
"extends": "dtslint/dt.json"
}