@thisisagile/easy-test-react 15.8.6 → 15.8.7
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/dist/ElementTester.d.ts +14 -0
- package/dist/ElementTester.js +51 -0
- package/dist/ElementTester.js.map +1 -0
- package/dist/ElementTester.mjs +27 -0
- package/dist/ElementTester.mjs.map +1 -0
- package/dist/{index.d.mts → Tester.d.ts} +4 -23
- package/dist/Tester.js +57 -0
- package/dist/Tester.js.map +1 -0
- package/dist/Tester.mjs +31 -0
- package/dist/Tester.mjs.map +1 -0
- package/dist/index.d.ts +3 -43
- package/dist/index.js +27 -1
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +4 -1
- package/dist/index.mjs.map +1 -0
- package/dist/waitForRender.d.ts +3 -0
- package/dist/waitForRender.js +37 -0
- package/dist/waitForRender.js.map +1 -0
- package/dist/waitForRender.mjs +13 -0
- package/dist/waitForRender.mjs.map +1 -0
- package/package.json +4 -4
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Tester } from './Tester';
|
|
2
|
+
export declare class ElementTester {
|
|
3
|
+
readonly element: () => Element;
|
|
4
|
+
constructor(element: () => Element);
|
|
5
|
+
get value(): string;
|
|
6
|
+
get isValid(): boolean;
|
|
7
|
+
get then(): Tester;
|
|
8
|
+
click: () => this | undefined;
|
|
9
|
+
awaitClick: () => Promise<boolean>;
|
|
10
|
+
mouseDown: (index?: number) => this | undefined;
|
|
11
|
+
type: (value: string) => boolean;
|
|
12
|
+
wait: () => Promise<Element>;
|
|
13
|
+
waitForRemove: () => Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var ElementTester_exports = {};
|
|
20
|
+
__export(ElementTester_exports, {
|
|
21
|
+
ElementTester: () => ElementTester
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(ElementTester_exports);
|
|
24
|
+
var import_react = require("@testing-library/react");
|
|
25
|
+
var import_easy = require("@thisisagile/easy");
|
|
26
|
+
var import_Tester = require("./Tester");
|
|
27
|
+
class ElementTester {
|
|
28
|
+
constructor(element) {
|
|
29
|
+
this.element = element;
|
|
30
|
+
}
|
|
31
|
+
get value() {
|
|
32
|
+
return this.element()?.value;
|
|
33
|
+
}
|
|
34
|
+
get isValid() {
|
|
35
|
+
return (0, import_easy.tryTo)(() => this.element()).is.defined().map(() => true).or(false);
|
|
36
|
+
}
|
|
37
|
+
get then() {
|
|
38
|
+
return new import_Tester.Tester(this.element());
|
|
39
|
+
}
|
|
40
|
+
click = () => this.element() && import_react.fireEvent.click(this.element()) ? this : void 0;
|
|
41
|
+
awaitClick = () => (0, import_react.waitFor)(() => import_react.fireEvent.click(this.element()));
|
|
42
|
+
mouseDown = (index) => this.element() && import_react.fireEvent.mouseDown((0, import_easy.isDefined)(index) ? this.element().children[index] : this.element()) ? this : void 0;
|
|
43
|
+
type = (value) => import_react.fireEvent.change(this.element(), { target: { value } });
|
|
44
|
+
wait = () => (0, import_react.waitFor)(this.element);
|
|
45
|
+
waitForRemove = () => (0, import_react.waitForElementToBeRemoved)(this.element);
|
|
46
|
+
}
|
|
47
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
48
|
+
0 && (module.exports = {
|
|
49
|
+
ElementTester
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=ElementTester.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ElementTester.ts"],"sourcesContent":["import { fireEvent, waitFor, waitForElementToBeRemoved } from '@testing-library/react';\nimport { isDefined, tryTo } from '@thisisagile/easy';\nimport { Tester } from './Tester';\n\nexport class ElementTester {\n constructor(readonly element: () => Element) {}\n\n get value(): string {\n return (this.element() as any)?.value as string;\n }\n\n get isValid(): boolean {\n return tryTo(() => this.element())\n .is.defined()\n .map(() => true)\n .or(false);\n }\n\n get then(): Tester {\n return new Tester(this.element() as HTMLElement);\n }\n\n click = (): this | undefined => (this.element() && fireEvent.click(this.element()) ? this : undefined);\n awaitClick = (): Promise<boolean> => waitFor(() => fireEvent.click(this.element()));\n mouseDown = (index?: number): this | undefined =>\n this.element() && fireEvent.mouseDown(isDefined(index) ? this.element().children[index] : this.element()) ? this : undefined;\n type = (value: string): boolean => fireEvent.change(this.element(), { target: { value } });\n wait = (): Promise<Element> => waitFor(this.element);\n waitForRemove = (): Promise<void> => waitForElementToBeRemoved(this.element);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA8D;AAC9D,kBAAiC;AACjC,oBAAuB;AAEhB,MAAM,cAAc;AAAA,EACzB,YAAqB,SAAwB;AAAxB;AAAA,EAAyB;AAAA,EAE9C,IAAI,QAAgB;AAClB,WAAQ,KAAK,QAAQ,GAAW;AAAA,EAClC;AAAA,EAEA,IAAI,UAAmB;AACrB,eAAO,mBAAM,MAAM,KAAK,QAAQ,CAAC,EAC9B,GAAG,QAAQ,EACX,IAAI,MAAM,IAAI,EACd,GAAG,KAAK;AAAA,EACb;AAAA,EAEA,IAAI,OAAe;AACjB,WAAO,IAAI,qBAAO,KAAK,QAAQ,CAAgB;AAAA,EACjD;AAAA,EAEA,QAAQ,MAAyB,KAAK,QAAQ,KAAK,uBAAU,MAAM,KAAK,QAAQ,CAAC,IAAI,OAAO;AAAA,EAC5F,aAAa,UAAwB,sBAAQ,MAAM,uBAAU,MAAM,KAAK,QAAQ,CAAC,CAAC;AAAA,EAClF,YAAY,CAAC,UACX,KAAK,QAAQ,KAAK,uBAAU,cAAU,uBAAU,KAAK,IAAI,KAAK,QAAQ,EAAE,SAAS,KAAK,IAAI,KAAK,QAAQ,CAAC,IAAI,OAAO;AAAA,EACrH,OAAO,CAAC,UAA2B,uBAAU,OAAO,KAAK,QAAQ,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAAA,EACzF,OAAO,UAAwB,sBAAQ,KAAK,OAAO;AAAA,EACnD,gBAAgB,UAAqB,wCAA0B,KAAK,OAAO;AAC7E;","names":[]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { fireEvent, waitFor, waitForElementToBeRemoved } from "@testing-library/react";
|
|
2
|
+
import { isDefined, tryTo } from "@thisisagile/easy";
|
|
3
|
+
import { Tester } from "./Tester";
|
|
4
|
+
class ElementTester {
|
|
5
|
+
constructor(element) {
|
|
6
|
+
this.element = element;
|
|
7
|
+
}
|
|
8
|
+
get value() {
|
|
9
|
+
return this.element()?.value;
|
|
10
|
+
}
|
|
11
|
+
get isValid() {
|
|
12
|
+
return tryTo(() => this.element()).is.defined().map(() => true).or(false);
|
|
13
|
+
}
|
|
14
|
+
get then() {
|
|
15
|
+
return new Tester(this.element());
|
|
16
|
+
}
|
|
17
|
+
click = () => this.element() && fireEvent.click(this.element()) ? this : void 0;
|
|
18
|
+
awaitClick = () => waitFor(() => fireEvent.click(this.element()));
|
|
19
|
+
mouseDown = (index) => this.element() && fireEvent.mouseDown(isDefined(index) ? this.element().children[index] : this.element()) ? this : void 0;
|
|
20
|
+
type = (value) => fireEvent.change(this.element(), { target: { value } });
|
|
21
|
+
wait = () => waitFor(this.element);
|
|
22
|
+
waitForRemove = () => waitForElementToBeRemoved(this.element);
|
|
23
|
+
}
|
|
24
|
+
export {
|
|
25
|
+
ElementTester
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=ElementTester.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ElementTester.ts"],"sourcesContent":["import { fireEvent, waitFor, waitForElementToBeRemoved } from '@testing-library/react';\nimport { isDefined, tryTo } from '@thisisagile/easy';\nimport { Tester } from './Tester';\n\nexport class ElementTester {\n constructor(readonly element: () => Element) {}\n\n get value(): string {\n return (this.element() as any)?.value as string;\n }\n\n get isValid(): boolean {\n return tryTo(() => this.element())\n .is.defined()\n .map(() => true)\n .or(false);\n }\n\n get then(): Tester {\n return new Tester(this.element() as HTMLElement);\n }\n\n click = (): this | undefined => (this.element() && fireEvent.click(this.element()) ? this : undefined);\n awaitClick = (): Promise<boolean> => waitFor(() => fireEvent.click(this.element()));\n mouseDown = (index?: number): this | undefined =>\n this.element() && fireEvent.mouseDown(isDefined(index) ? this.element().children[index] : this.element()) ? this : undefined;\n type = (value: string): boolean => fireEvent.change(this.element(), { target: { value } });\n wait = (): Promise<Element> => waitFor(this.element);\n waitForRemove = (): Promise<void> => waitForElementToBeRemoved(this.element);\n}\n"],"mappings":"AAAA,SAAS,WAAW,SAAS,iCAAiC;AAC9D,SAAS,WAAW,aAAa;AACjC,SAAS,cAAc;AAEhB,MAAM,cAAc;AAAA,EACzB,YAAqB,SAAwB;AAAxB;AAAA,EAAyB;AAAA,EAE9C,IAAI,QAAgB;AAClB,WAAQ,KAAK,QAAQ,GAAW;AAAA,EAClC;AAAA,EAEA,IAAI,UAAmB;AACrB,WAAO,MAAM,MAAM,KAAK,QAAQ,CAAC,EAC9B,GAAG,QAAQ,EACX,IAAI,MAAM,IAAI,EACd,GAAG,KAAK;AAAA,EACb;AAAA,EAEA,IAAI,OAAe;AACjB,WAAO,IAAI,OAAO,KAAK,QAAQ,CAAgB;AAAA,EACjD;AAAA,EAEA,QAAQ,MAAyB,KAAK,QAAQ,KAAK,UAAU,MAAM,KAAK,QAAQ,CAAC,IAAI,OAAO;AAAA,EAC5F,aAAa,MAAwB,QAAQ,MAAM,UAAU,MAAM,KAAK,QAAQ,CAAC,CAAC;AAAA,EAClF,YAAY,CAAC,UACX,KAAK,QAAQ,KAAK,UAAU,UAAU,UAAU,KAAK,IAAI,KAAK,QAAQ,EAAE,SAAS,KAAK,IAAI,KAAK,QAAQ,CAAC,IAAI,OAAO;AAAA,EACrH,OAAO,CAAC,UAA2B,UAAU,OAAO,KAAK,QAAQ,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAAA,EACzF,OAAO,MAAwB,QAAQ,KAAK,OAAO;AAAA,EACnD,gBAAgB,MAAqB,0BAA0B,KAAK,OAAO;AAC7E;","names":[]}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { ReactElement } from 'react';
|
|
2
2
|
import { Id } from '@thisisagile/easy';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
declare class Tester {
|
|
3
|
+
import { ElementTester } from './ElementTester';
|
|
4
|
+
export declare class Tester {
|
|
6
5
|
readonly container: HTMLElement;
|
|
7
6
|
constructor(container: HTMLElement);
|
|
8
7
|
static render: (component: ReactElement) => Promise<Tester>;
|
|
@@ -21,23 +20,5 @@ declare class Tester {
|
|
|
21
20
|
atPlaceholder: (placeholder: string, index?: number) => ElementTester;
|
|
22
21
|
submit: (id?: Id) => ElementTester;
|
|
23
22
|
}
|
|
24
|
-
declare const rendersWait: (component: ReactElement) => Promise<Tester>;
|
|
25
|
-
declare const renders: (component: ReactElement) => Tester;
|
|
26
|
-
|
|
27
|
-
declare class ElementTester {
|
|
28
|
-
readonly element: () => Element;
|
|
29
|
-
constructor(element: () => Element);
|
|
30
|
-
get value(): string;
|
|
31
|
-
get isValid(): boolean;
|
|
32
|
-
get then(): Tester;
|
|
33
|
-
click: () => this | undefined;
|
|
34
|
-
awaitClick: () => Promise<boolean>;
|
|
35
|
-
mouseDown: (index?: number) => this | undefined;
|
|
36
|
-
type: (value: string) => boolean;
|
|
37
|
-
wait: () => Promise<Element>;
|
|
38
|
-
waitForRemove: () => Promise<void>;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
declare function waitForRender(ui: ReactElement, options?: Omit<RenderOptions, 'queries'>): Promise<RenderResult>;
|
|
42
|
-
|
|
43
|
-
export { ElementTester, Tester, renders, rendersWait, waitForRender };
|
|
23
|
+
export declare const rendersWait: (component: ReactElement) => Promise<Tester>;
|
|
24
|
+
export declare const renders: (component: ReactElement) => Tester;
|
package/dist/Tester.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var Tester_exports = {};
|
|
20
|
+
__export(Tester_exports, {
|
|
21
|
+
Tester: () => Tester,
|
|
22
|
+
renders: () => renders,
|
|
23
|
+
rendersWait: () => rendersWait
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(Tester_exports);
|
|
26
|
+
var import_react = require("@testing-library/react");
|
|
27
|
+
var import_waitForRender = require("./waitForRender");
|
|
28
|
+
var import_ElementTester = require("./ElementTester");
|
|
29
|
+
class Tester {
|
|
30
|
+
constructor(container) {
|
|
31
|
+
this.container = container;
|
|
32
|
+
}
|
|
33
|
+
static render = (component) => (0, import_waitForRender.waitForRender)(component).then((c) => new Tester(c.container));
|
|
34
|
+
static renderSync = (component) => new Tester((0, import_react.render)(component).container);
|
|
35
|
+
byText = (text, index) => index ? import_react.screen.getAllByText(text)[index] : import_react.screen.getByText(text);
|
|
36
|
+
atText = (text, index) => new import_ElementTester.ElementTester(() => this.byText(text, index));
|
|
37
|
+
byId = (id, index) => index ? import_react.screen.getAllByTestId(id.toString())[index] : import_react.screen.getByTestId(id.toString());
|
|
38
|
+
atId = (id, index) => new import_ElementTester.ElementTester(() => this.byId(id, index));
|
|
39
|
+
byRole = (role, index) => index ? import_react.screen.getAllByRole(role)[index] : import_react.screen.getByRole(role);
|
|
40
|
+
atRole = (role, index) => new import_ElementTester.ElementTester(() => this.byRole(role, index));
|
|
41
|
+
byRow = (index) => index ? import_react.screen.getAllByRole("row")[index] : import_react.screen.getByRole("row");
|
|
42
|
+
atRow = (index) => new import_ElementTester.ElementTester(() => this.byRow(index));
|
|
43
|
+
byTitle = (title, index) => index ? import_react.screen.getAllByTitle(title)[index] : import_react.screen.getByTitle(title);
|
|
44
|
+
atTitle = (title, index) => new import_ElementTester.ElementTester(() => this.byTitle(title, index));
|
|
45
|
+
byPlaceholder = (placeholder, index) => index ? import_react.screen.getAllByPlaceholderText(placeholder)[index] : import_react.screen.getByPlaceholderText(placeholder);
|
|
46
|
+
atPlaceholder = (placeholder, index) => new import_ElementTester.ElementTester(() => this.byPlaceholder(placeholder, index));
|
|
47
|
+
submit = (id = "btn-submit") => this.atId(id);
|
|
48
|
+
}
|
|
49
|
+
const rendersWait = async (component) => await Tester.render(component);
|
|
50
|
+
const renders = (component) => Tester.renderSync(component);
|
|
51
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
52
|
+
0 && (module.exports = {
|
|
53
|
+
Tester,
|
|
54
|
+
renders,
|
|
55
|
+
rendersWait
|
|
56
|
+
});
|
|
57
|
+
//# sourceMappingURL=Tester.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/Tester.ts"],"sourcesContent":["import { render, screen } from '@testing-library/react';\nimport { ReactElement } from 'react';\nimport { Id } from '@thisisagile/easy';\nimport { waitForRender } from './waitForRender';\nimport { ElementTester } from './ElementTester';\n\nexport class Tester {\n constructor(public readonly container: HTMLElement) {}\n\n static render = (component: ReactElement): Promise<Tester> => waitForRender(component).then(c => new Tester(c.container));\n static renderSync = (component: ReactElement): Tester => new Tester(render(component).container);\n\n byText = (text: string, index?: number): HTMLElement => (index ? screen.getAllByText(text)[index] : screen.getByText(text));\n atText = (text: string, index?: number): ElementTester => new ElementTester(() => this.byText(text, index));\n byId = (id: Id, index?: number): HTMLElement => (index ? screen.getAllByTestId(id.toString())[index] : screen.getByTestId(id.toString()));\n atId = (id: Id, index?: number): ElementTester => new ElementTester(() => this.byId(id, index));\n byRole = (role: string, index?: number): HTMLElement => (index ? screen.getAllByRole(role)[index] : screen.getByRole(role));\n atRole = (role: string, index?: number): ElementTester => new ElementTester(() => this.byRole(role, index));\n byRow = (index?: number): HTMLElement => (index ? screen.getAllByRole('row')[index] : screen.getByRole('row'));\n atRow = (index?: number): ElementTester => new ElementTester(() => this.byRow(index));\n byTitle = (title: string, index?: number): HTMLElement => (index ? screen.getAllByTitle(title)[index] : screen.getByTitle(title));\n atTitle = (title: string, index?: number): ElementTester => new ElementTester(() => this.byTitle(title, index));\n byPlaceholder = (placeholder: string, index?: number): HTMLElement =>\n index ? screen.getAllByPlaceholderText(placeholder)[index] : screen.getByPlaceholderText(placeholder);\n atPlaceholder = (placeholder: string, index?: number): ElementTester => new ElementTester(() => this.byPlaceholder(placeholder, index));\n submit = (id: Id = 'btn-submit'): ElementTester => this.atId(id);\n}\n\nexport const rendersWait = async (component: ReactElement): Promise<Tester> => await Tester.render(component);\nexport const renders = (component: ReactElement): Tester => Tester.renderSync(component);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA+B;AAG/B,2BAA8B;AAC9B,2BAA8B;AAEvB,MAAM,OAAO;AAAA,EAClB,YAA4B,WAAwB;AAAxB;AAAA,EAAyB;AAAA,EAErD,OAAO,SAAS,CAAC,kBAA6C,oCAAc,SAAS,EAAE,KAAK,OAAK,IAAI,OAAO,EAAE,SAAS,CAAC;AAAA,EACxH,OAAO,aAAa,CAAC,cAAoC,IAAI,WAAO,qBAAO,SAAS,EAAE,SAAS;AAAA,EAE/F,SAAS,CAAC,MAAc,UAAiC,QAAQ,oBAAO,aAAa,IAAI,EAAE,KAAK,IAAI,oBAAO,UAAU,IAAI;AAAA,EACzH,SAAS,CAAC,MAAc,UAAkC,IAAI,mCAAc,MAAM,KAAK,OAAO,MAAM,KAAK,CAAC;AAAA,EAC1G,OAAO,CAAC,IAAQ,UAAiC,QAAQ,oBAAO,eAAe,GAAG,SAAS,CAAC,EAAE,KAAK,IAAI,oBAAO,YAAY,GAAG,SAAS,CAAC;AAAA,EACvI,OAAO,CAAC,IAAQ,UAAkC,IAAI,mCAAc,MAAM,KAAK,KAAK,IAAI,KAAK,CAAC;AAAA,EAC9F,SAAS,CAAC,MAAc,UAAiC,QAAQ,oBAAO,aAAa,IAAI,EAAE,KAAK,IAAI,oBAAO,UAAU,IAAI;AAAA,EACzH,SAAS,CAAC,MAAc,UAAkC,IAAI,mCAAc,MAAM,KAAK,OAAO,MAAM,KAAK,CAAC;AAAA,EAC1G,QAAQ,CAAC,UAAiC,QAAQ,oBAAO,aAAa,KAAK,EAAE,KAAK,IAAI,oBAAO,UAAU,KAAK;AAAA,EAC5G,QAAQ,CAAC,UAAkC,IAAI,mCAAc,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,EACpF,UAAU,CAAC,OAAe,UAAiC,QAAQ,oBAAO,cAAc,KAAK,EAAE,KAAK,IAAI,oBAAO,WAAW,KAAK;AAAA,EAC/H,UAAU,CAAC,OAAe,UAAkC,IAAI,mCAAc,MAAM,KAAK,QAAQ,OAAO,KAAK,CAAC;AAAA,EAC9G,gBAAgB,CAAC,aAAqB,UACpC,QAAQ,oBAAO,wBAAwB,WAAW,EAAE,KAAK,IAAI,oBAAO,qBAAqB,WAAW;AAAA,EACtG,gBAAgB,CAAC,aAAqB,UAAkC,IAAI,mCAAc,MAAM,KAAK,cAAc,aAAa,KAAK,CAAC;AAAA,EACtI,SAAS,CAAC,KAAS,iBAAgC,KAAK,KAAK,EAAE;AACjE;AAEO,MAAM,cAAc,OAAO,cAA6C,MAAM,OAAO,OAAO,SAAS;AACrG,MAAM,UAAU,CAAC,cAAoC,OAAO,WAAW,SAAS;","names":[]}
|
package/dist/Tester.mjs
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { render, screen } from "@testing-library/react";
|
|
2
|
+
import { waitForRender } from "./waitForRender";
|
|
3
|
+
import { ElementTester } from "./ElementTester";
|
|
4
|
+
class Tester {
|
|
5
|
+
constructor(container) {
|
|
6
|
+
this.container = container;
|
|
7
|
+
}
|
|
8
|
+
static render = (component) => waitForRender(component).then((c) => new Tester(c.container));
|
|
9
|
+
static renderSync = (component) => new Tester(render(component).container);
|
|
10
|
+
byText = (text, index) => index ? screen.getAllByText(text)[index] : screen.getByText(text);
|
|
11
|
+
atText = (text, index) => new ElementTester(() => this.byText(text, index));
|
|
12
|
+
byId = (id, index) => index ? screen.getAllByTestId(id.toString())[index] : screen.getByTestId(id.toString());
|
|
13
|
+
atId = (id, index) => new ElementTester(() => this.byId(id, index));
|
|
14
|
+
byRole = (role, index) => index ? screen.getAllByRole(role)[index] : screen.getByRole(role);
|
|
15
|
+
atRole = (role, index) => new ElementTester(() => this.byRole(role, index));
|
|
16
|
+
byRow = (index) => index ? screen.getAllByRole("row")[index] : screen.getByRole("row");
|
|
17
|
+
atRow = (index) => new ElementTester(() => this.byRow(index));
|
|
18
|
+
byTitle = (title, index) => index ? screen.getAllByTitle(title)[index] : screen.getByTitle(title);
|
|
19
|
+
atTitle = (title, index) => new ElementTester(() => this.byTitle(title, index));
|
|
20
|
+
byPlaceholder = (placeholder, index) => index ? screen.getAllByPlaceholderText(placeholder)[index] : screen.getByPlaceholderText(placeholder);
|
|
21
|
+
atPlaceholder = (placeholder, index) => new ElementTester(() => this.byPlaceholder(placeholder, index));
|
|
22
|
+
submit = (id = "btn-submit") => this.atId(id);
|
|
23
|
+
}
|
|
24
|
+
const rendersWait = async (component) => await Tester.render(component);
|
|
25
|
+
const renders = (component) => Tester.renderSync(component);
|
|
26
|
+
export {
|
|
27
|
+
Tester,
|
|
28
|
+
renders,
|
|
29
|
+
rendersWait
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=Tester.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/Tester.ts"],"sourcesContent":["import { render, screen } from '@testing-library/react';\nimport { ReactElement } from 'react';\nimport { Id } from '@thisisagile/easy';\nimport { waitForRender } from './waitForRender';\nimport { ElementTester } from './ElementTester';\n\nexport class Tester {\n constructor(public readonly container: HTMLElement) {}\n\n static render = (component: ReactElement): Promise<Tester> => waitForRender(component).then(c => new Tester(c.container));\n static renderSync = (component: ReactElement): Tester => new Tester(render(component).container);\n\n byText = (text: string, index?: number): HTMLElement => (index ? screen.getAllByText(text)[index] : screen.getByText(text));\n atText = (text: string, index?: number): ElementTester => new ElementTester(() => this.byText(text, index));\n byId = (id: Id, index?: number): HTMLElement => (index ? screen.getAllByTestId(id.toString())[index] : screen.getByTestId(id.toString()));\n atId = (id: Id, index?: number): ElementTester => new ElementTester(() => this.byId(id, index));\n byRole = (role: string, index?: number): HTMLElement => (index ? screen.getAllByRole(role)[index] : screen.getByRole(role));\n atRole = (role: string, index?: number): ElementTester => new ElementTester(() => this.byRole(role, index));\n byRow = (index?: number): HTMLElement => (index ? screen.getAllByRole('row')[index] : screen.getByRole('row'));\n atRow = (index?: number): ElementTester => new ElementTester(() => this.byRow(index));\n byTitle = (title: string, index?: number): HTMLElement => (index ? screen.getAllByTitle(title)[index] : screen.getByTitle(title));\n atTitle = (title: string, index?: number): ElementTester => new ElementTester(() => this.byTitle(title, index));\n byPlaceholder = (placeholder: string, index?: number): HTMLElement =>\n index ? screen.getAllByPlaceholderText(placeholder)[index] : screen.getByPlaceholderText(placeholder);\n atPlaceholder = (placeholder: string, index?: number): ElementTester => new ElementTester(() => this.byPlaceholder(placeholder, index));\n submit = (id: Id = 'btn-submit'): ElementTester => this.atId(id);\n}\n\nexport const rendersWait = async (component: ReactElement): Promise<Tester> => await Tester.render(component);\nexport const renders = (component: ReactElement): Tester => Tester.renderSync(component);\n"],"mappings":"AAAA,SAAS,QAAQ,cAAc;AAG/B,SAAS,qBAAqB;AAC9B,SAAS,qBAAqB;AAEvB,MAAM,OAAO;AAAA,EAClB,YAA4B,WAAwB;AAAxB;AAAA,EAAyB;AAAA,EAErD,OAAO,SAAS,CAAC,cAA6C,cAAc,SAAS,EAAE,KAAK,OAAK,IAAI,OAAO,EAAE,SAAS,CAAC;AAAA,EACxH,OAAO,aAAa,CAAC,cAAoC,IAAI,OAAO,OAAO,SAAS,EAAE,SAAS;AAAA,EAE/F,SAAS,CAAC,MAAc,UAAiC,QAAQ,OAAO,aAAa,IAAI,EAAE,KAAK,IAAI,OAAO,UAAU,IAAI;AAAA,EACzH,SAAS,CAAC,MAAc,UAAkC,IAAI,cAAc,MAAM,KAAK,OAAO,MAAM,KAAK,CAAC;AAAA,EAC1G,OAAO,CAAC,IAAQ,UAAiC,QAAQ,OAAO,eAAe,GAAG,SAAS,CAAC,EAAE,KAAK,IAAI,OAAO,YAAY,GAAG,SAAS,CAAC;AAAA,EACvI,OAAO,CAAC,IAAQ,UAAkC,IAAI,cAAc,MAAM,KAAK,KAAK,IAAI,KAAK,CAAC;AAAA,EAC9F,SAAS,CAAC,MAAc,UAAiC,QAAQ,OAAO,aAAa,IAAI,EAAE,KAAK,IAAI,OAAO,UAAU,IAAI;AAAA,EACzH,SAAS,CAAC,MAAc,UAAkC,IAAI,cAAc,MAAM,KAAK,OAAO,MAAM,KAAK,CAAC;AAAA,EAC1G,QAAQ,CAAC,UAAiC,QAAQ,OAAO,aAAa,KAAK,EAAE,KAAK,IAAI,OAAO,UAAU,KAAK;AAAA,EAC5G,QAAQ,CAAC,UAAkC,IAAI,cAAc,MAAM,KAAK,MAAM,KAAK,CAAC;AAAA,EACpF,UAAU,CAAC,OAAe,UAAiC,QAAQ,OAAO,cAAc,KAAK,EAAE,KAAK,IAAI,OAAO,WAAW,KAAK;AAAA,EAC/H,UAAU,CAAC,OAAe,UAAkC,IAAI,cAAc,MAAM,KAAK,QAAQ,OAAO,KAAK,CAAC;AAAA,EAC9G,gBAAgB,CAAC,aAAqB,UACpC,QAAQ,OAAO,wBAAwB,WAAW,EAAE,KAAK,IAAI,OAAO,qBAAqB,WAAW;AAAA,EACtG,gBAAgB,CAAC,aAAqB,UAAkC,IAAI,cAAc,MAAM,KAAK,cAAc,aAAa,KAAK,CAAC;AAAA,EACtI,SAAS,CAAC,KAAS,iBAAgC,KAAK,KAAK,EAAE;AACjE;AAEO,MAAM,cAAc,OAAO,cAA6C,MAAM,OAAO,OAAO,SAAS;AACrG,MAAM,UAAU,CAAC,cAAoC,OAAO,WAAW,SAAS;","names":[]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,43 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
declare class Tester {
|
|
6
|
-
readonly container: HTMLElement;
|
|
7
|
-
constructor(container: HTMLElement);
|
|
8
|
-
static render: (component: ReactElement) => Promise<Tester>;
|
|
9
|
-
static renderSync: (component: ReactElement) => Tester;
|
|
10
|
-
byText: (text: string, index?: number) => HTMLElement;
|
|
11
|
-
atText: (text: string, index?: number) => ElementTester;
|
|
12
|
-
byId: (id: Id, index?: number) => HTMLElement;
|
|
13
|
-
atId: (id: Id, index?: number) => ElementTester;
|
|
14
|
-
byRole: (role: string, index?: number) => HTMLElement;
|
|
15
|
-
atRole: (role: string, index?: number) => ElementTester;
|
|
16
|
-
byRow: (index?: number) => HTMLElement;
|
|
17
|
-
atRow: (index?: number) => ElementTester;
|
|
18
|
-
byTitle: (title: string, index?: number) => HTMLElement;
|
|
19
|
-
atTitle: (title: string, index?: number) => ElementTester;
|
|
20
|
-
byPlaceholder: (placeholder: string, index?: number) => HTMLElement;
|
|
21
|
-
atPlaceholder: (placeholder: string, index?: number) => ElementTester;
|
|
22
|
-
submit: (id?: Id) => ElementTester;
|
|
23
|
-
}
|
|
24
|
-
declare const rendersWait: (component: ReactElement) => Promise<Tester>;
|
|
25
|
-
declare const renders: (component: ReactElement) => Tester;
|
|
26
|
-
|
|
27
|
-
declare class ElementTester {
|
|
28
|
-
readonly element: () => Element;
|
|
29
|
-
constructor(element: () => Element);
|
|
30
|
-
get value(): string;
|
|
31
|
-
get isValid(): boolean;
|
|
32
|
-
get then(): Tester;
|
|
33
|
-
click: () => this | undefined;
|
|
34
|
-
awaitClick: () => Promise<boolean>;
|
|
35
|
-
mouseDown: (index?: number) => this | undefined;
|
|
36
|
-
type: (value: string) => boolean;
|
|
37
|
-
wait: () => Promise<Element>;
|
|
38
|
-
waitForRemove: () => Promise<void>;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
declare function waitForRender(ui: ReactElement, options?: Omit<RenderOptions, 'queries'>): Promise<RenderResult>;
|
|
42
|
-
|
|
43
|
-
export { ElementTester, Tester, renders, rendersWait, waitForRender };
|
|
1
|
+
export * from './ElementTester';
|
|
2
|
+
export * from './Tester';
|
|
3
|
+
export * from './waitForRender';
|
package/dist/index.js
CHANGED
|
@@ -1 +1,27 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
15
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
16
|
+
var src_exports = {};
|
|
17
|
+
module.exports = __toCommonJS(src_exports);
|
|
18
|
+
__reExport(src_exports, require("./ElementTester"), module.exports);
|
|
19
|
+
__reExport(src_exports, require("./Tester"), module.exports);
|
|
20
|
+
__reExport(src_exports, require("./waitForRender"), module.exports);
|
|
21
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
22
|
+
0 && (module.exports = {
|
|
23
|
+
...require("./ElementTester"),
|
|
24
|
+
...require("./Tester"),
|
|
25
|
+
...require("./waitForRender")
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from './ElementTester';\nexport * from './Tester';\nexport * from './waitForRender';\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,wBAAc,4BAAd;AACA,wBAAc,qBADd;AAEA,wBAAc,4BAFd;","names":[]}
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
export * from "./ElementTester";
|
|
2
|
+
export * from "./Tester";
|
|
3
|
+
export * from "./waitForRender";
|
|
4
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from './ElementTester';\nexport * from './Tester';\nexport * from './waitForRender';\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var waitForRender_exports = {};
|
|
20
|
+
__export(waitForRender_exports, {
|
|
21
|
+
waitForRender: () => waitForRender
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(waitForRender_exports);
|
|
24
|
+
var import_react = require("@testing-library/react");
|
|
25
|
+
async function waitForRender(ui, options) {
|
|
26
|
+
let r = {};
|
|
27
|
+
await (0, import_react.act)(async () => {
|
|
28
|
+
r = (0, import_react.render)(ui, options);
|
|
29
|
+
await (0, import_react.waitFor)(() => r.container, { container: r.container });
|
|
30
|
+
});
|
|
31
|
+
return r;
|
|
32
|
+
}
|
|
33
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
34
|
+
0 && (module.exports = {
|
|
35
|
+
waitForRender
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=waitForRender.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/waitForRender.ts"],"sourcesContent":["import { act, render, RenderOptions, RenderResult, waitFor } from '@testing-library/react';\nimport { ReactElement } from 'react';\n\n/* istanbul ignore next */\nexport async function waitForRender(ui: ReactElement, options?: Omit<RenderOptions, 'queries'>): Promise<RenderResult> {\n let r = {} as RenderResult;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n await act(async () => {\n r = render(ui, options);\n await waitFor(() => r.container, { container: r.container });\n });\n return r;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkE;AAIlE,eAAsB,cAAc,IAAkB,SAAiE;AACrH,MAAI,IAAI,CAAC;AAET,YAAM,kBAAI,YAAY;AACpB,YAAI,qBAAO,IAAI,OAAO;AACtB,cAAM,sBAAQ,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC;AAAA,EAC7D,CAAC;AACD,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { act, render, waitFor } from "@testing-library/react";
|
|
2
|
+
async function waitForRender(ui, options) {
|
|
3
|
+
let r = {};
|
|
4
|
+
await act(async () => {
|
|
5
|
+
r = render(ui, options);
|
|
6
|
+
await waitFor(() => r.container, { container: r.container });
|
|
7
|
+
});
|
|
8
|
+
return r;
|
|
9
|
+
}
|
|
10
|
+
export {
|
|
11
|
+
waitForRender
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=waitForRender.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/waitForRender.ts"],"sourcesContent":["import { act, render, RenderOptions, RenderResult, waitFor } from '@testing-library/react';\nimport { ReactElement } from 'react';\n\n/* istanbul ignore next */\nexport async function waitForRender(ui: ReactElement, options?: Omit<RenderOptions, 'queries'>): Promise<RenderResult> {\n let r = {} as RenderResult;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n await act(async () => {\n r = render(ui, options);\n await waitFor(() => r.container, { container: r.container });\n });\n return r;\n}\n"],"mappings":"AAAA,SAAS,KAAK,QAAqC,eAAe;AAIlE,eAAsB,cAAc,IAAkB,SAAiE;AACrH,MAAI,IAAI,CAAC;AAET,QAAM,IAAI,YAAY;AACpB,QAAI,OAAO,IAAI,OAAO;AACtB,UAAM,QAAQ,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC;AAAA,EAC7D,CAAC;AACD,SAAO;AACT;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thisisagile/easy-test-react",
|
|
3
|
-
"version": "15.8.
|
|
3
|
+
"version": "15.8.7",
|
|
4
4
|
"description": "Straightforward wrapper library for testing-library/react",
|
|
5
5
|
"author": "Sander Hoogendoorn",
|
|
6
6
|
"license": "MIT",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"lint": "yarn g:eslint . --ext .js,.jsx,.ts,.tsx --fix",
|
|
24
24
|
"format": "yarn g:prettier --check --write src test *.json",
|
|
25
25
|
"build": "yarn g:tsc",
|
|
26
|
-
"build:tsup": "yarn g:tsup",
|
|
26
|
+
"build:tsup": "yarn g:tsup --onSuccess \"yarn g:tsc --emitDeclarationOnly --declaration\"",
|
|
27
27
|
"test": "yarn g:jest --coverage",
|
|
28
28
|
"prepack": "yarn g:copy-readme"
|
|
29
29
|
},
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"access": "public"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@thisisagile/easy-test": "15.8.
|
|
38
|
+
"@thisisagile/easy-test": "15.8.7",
|
|
39
39
|
"jest-environment-jsdom": "^29.5.0",
|
|
40
40
|
"weak-napi": "^2.0.2"
|
|
41
41
|
},
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"@testing-library/dom": "^9.2.0",
|
|
44
44
|
"@testing-library/jest-dom": "^5.16.5",
|
|
45
45
|
"@testing-library/react": "^14.0.0",
|
|
46
|
-
"@thisisagile/easy": "^15.8.
|
|
46
|
+
"@thisisagile/easy": "^15.8.7",
|
|
47
47
|
"@types/react": "^18.2.12",
|
|
48
48
|
"react": "^18.2.0",
|
|
49
49
|
"react-dom": "^18.2.0"
|