@thisisagile/easy-test-react 15.8.6 → 15.8.8

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.
@@ -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 { RenderOptions, RenderResult } from '@testing-library/react';
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":[]}
@@ -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
- import { ReactElement } from 'react';
2
- import { Id } from '@thisisagile/easy';
3
- import { RenderOptions, RenderResult } from '@testing-library/react';
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";var c=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var h=(r,e)=>{for(var t in e)c(r,t,{get:e[t],enumerable:!0})},g=(r,e,t,u)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of y(e))!b.call(r,s)&&s!==t&&c(r,s,{get:()=>e[s],enumerable:!(u=T(e,s))||u.enumerable});return r};var R=r=>g(c({},"__esModule",{value:!0}),r);var f={};h(f,{ElementTester:()=>i,Tester:()=>l,renders:()=>E,rendersWait:()=>w,waitForRender:()=>d});module.exports=R(f);var o=require("@testing-library/react"),a=require("@thisisagile/easy");var n=require("@testing-library/react");var m=require("@testing-library/react");async function d(r,e){let t={};return await(0,m.act)(async()=>{t=(0,m.render)(r,e),await(0,m.waitFor)(()=>t.container,{container:t.container})}),t}var l=class r{constructor(e){this.container=e}static render=e=>d(e).then(t=>new r(t.container));static renderSync=e=>new r((0,n.render)(e).container);byText=(e,t)=>t?n.screen.getAllByText(e)[t]:n.screen.getByText(e);atText=(e,t)=>new i(()=>this.byText(e,t));byId=(e,t)=>t?n.screen.getAllByTestId(e.toString())[t]:n.screen.getByTestId(e.toString());atId=(e,t)=>new i(()=>this.byId(e,t));byRole=(e,t)=>t?n.screen.getAllByRole(e)[t]:n.screen.getByRole(e);atRole=(e,t)=>new i(()=>this.byRole(e,t));byRow=e=>e?n.screen.getAllByRole("row")[e]:n.screen.getByRole("row");atRow=e=>new i(()=>this.byRow(e));byTitle=(e,t)=>t?n.screen.getAllByTitle(e)[t]:n.screen.getByTitle(e);atTitle=(e,t)=>new i(()=>this.byTitle(e,t));byPlaceholder=(e,t)=>t?n.screen.getAllByPlaceholderText(e)[t]:n.screen.getByPlaceholderText(e);atPlaceholder=(e,t)=>new i(()=>this.byPlaceholder(e,t));submit=(e="btn-submit")=>this.atId(e)},w=async r=>await l.render(r),E=r=>l.renderSync(r);var i=class{constructor(e){this.element=e}get value(){return this.element()?.value}get isValid(){return(0,a.tryTo)(()=>this.element()).is.defined().map(()=>!0).or(!1)}get then(){return new l(this.element())}click=()=>this.element()&&o.fireEvent.click(this.element())?this:void 0;awaitClick=()=>(0,o.waitFor)(()=>o.fireEvent.click(this.element()));mouseDown=e=>this.element()&&o.fireEvent.mouseDown((0,a.isDefined)(e)?this.element().children[e]:this.element())?this:void 0;type=e=>o.fireEvent.change(this.element(),{target:{value:e}});wait=()=>(0,o.waitFor)(this.element);waitForRemove=()=>(0,o.waitForElementToBeRemoved)(this.element)};0&&(module.exports={ElementTester,Tester,renders,rendersWait,waitForRender});
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
- import{fireEvent as l,waitFor as s,waitForElementToBeRemoved as T}from"@testing-library/react";import{isDefined as y,tryTo as b}from"@thisisagile/easy";import{render as u,screen as r}from"@testing-library/react";import{act as a,render as c,waitFor as d}from"@testing-library/react";async function m(n,e){let t={};return await a(async()=>{t=c(n,e),await d(()=>t.container,{container:t.container})}),t}var o=class n{constructor(e){this.container=e}static render=e=>m(e).then(t=>new n(t.container));static renderSync=e=>new n(u(e).container);byText=(e,t)=>t?r.getAllByText(e)[t]:r.getByText(e);atText=(e,t)=>new i(()=>this.byText(e,t));byId=(e,t)=>t?r.getAllByTestId(e.toString())[t]:r.getByTestId(e.toString());atId=(e,t)=>new i(()=>this.byId(e,t));byRole=(e,t)=>t?r.getAllByRole(e)[t]:r.getByRole(e);atRole=(e,t)=>new i(()=>this.byRole(e,t));byRow=e=>e?r.getAllByRole("row")[e]:r.getByRole("row");atRow=e=>new i(()=>this.byRow(e));byTitle=(e,t)=>t?r.getAllByTitle(e)[t]:r.getByTitle(e);atTitle=(e,t)=>new i(()=>this.byTitle(e,t));byPlaceholder=(e,t)=>t?r.getAllByPlaceholderText(e)[t]:r.getByPlaceholderText(e);atPlaceholder=(e,t)=>new i(()=>this.byPlaceholder(e,t));submit=(e="btn-submit")=>this.atId(e)},B=async n=>await o.render(n),P=n=>o.renderSync(n);var i=class{constructor(e){this.element=e}get value(){return this.element()?.value}get isValid(){return b(()=>this.element()).is.defined().map(()=>!0).or(!1)}get then(){return new o(this.element())}click=()=>this.element()&&l.click(this.element())?this:void 0;awaitClick=()=>s(()=>l.click(this.element()));mouseDown=e=>this.element()&&l.mouseDown(y(e)?this.element().children[e]:this.element())?this:void 0;type=e=>l.change(this.element(),{target:{value:e}});wait=()=>s(this.element);waitForRemove=()=>T(this.element)};export{i as ElementTester,o as Tester,P as renders,B as rendersWait,m as waitForRender};
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,3 @@
1
+ import { RenderOptions, RenderResult } from '@testing-library/react';
2
+ import { ReactElement } from 'react';
3
+ export declare function waitForRender(ui: ReactElement, options?: Omit<RenderOptions, 'queries'>): Promise<RenderResult>;
@@ -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.6",
3
+ "version": "15.8.8",
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.6",
38
+ "@thisisagile/easy-test": "15.8.8",
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.6",
46
+ "@thisisagile/easy": "^15.8.8",
47
47
  "@types/react": "^18.2.12",
48
48
  "react": "^18.2.0",
49
49
  "react-dom": "^18.2.0"