@thisisagile/easy-test-react 15.26.1 → 15.27.0

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.
@@ -1,26 +1,7 @@
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
- }
1
+ import {
2
+ ElementTester
3
+ } from "./chunk-PVNTZBJD.mjs";
4
+ import "./chunk-ZGG2OAIC.mjs";
24
5
  export {
25
6
  ElementTester
26
7
  };
@@ -1 +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
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/dist/Tester.mjs CHANGED
@@ -1,28 +1,9 @@
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);
1
+ import {
2
+ Tester,
3
+ renders,
4
+ rendersWait
5
+ } from "./chunk-PVNTZBJD.mjs";
6
+ import "./chunk-ZGG2OAIC.mjs";
26
7
  export {
27
8
  Tester,
28
9
  renders,
@@ -1 +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":[]}
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,62 @@
1
+ import {
2
+ waitForRender
3
+ } from "./chunk-ZGG2OAIC.mjs";
4
+
5
+ // src/Tester.ts
6
+ import { render, screen } from "@testing-library/react";
7
+
8
+ // src/ElementTester.ts
9
+ import { fireEvent, waitFor, waitForElementToBeRemoved } from "@testing-library/react";
10
+ import { isDefined, tryTo } from "@thisisagile/easy";
11
+ var ElementTester = class {
12
+ constructor(element) {
13
+ this.element = element;
14
+ }
15
+ get value() {
16
+ return this.element()?.value;
17
+ }
18
+ get isValid() {
19
+ return tryTo(() => this.element()).is.defined().map(() => true).or(false);
20
+ }
21
+ get then() {
22
+ return new Tester(this.element());
23
+ }
24
+ click = () => this.element() && fireEvent.click(this.element()) ? this : void 0;
25
+ awaitClick = () => waitFor(() => fireEvent.click(this.element()));
26
+ mouseDown = (index) => this.element() && fireEvent.mouseDown(isDefined(index) ? this.element().children[index] : this.element()) ? this : void 0;
27
+ type = (value) => fireEvent.change(this.element(), { target: { value } });
28
+ wait = () => waitFor(this.element);
29
+ waitForRemove = () => waitForElementToBeRemoved(this.element);
30
+ };
31
+
32
+ // src/Tester.ts
33
+ var Tester = class _Tester {
34
+ constructor(container) {
35
+ this.container = container;
36
+ }
37
+ static render = (component) => waitForRender(component).then((c) => new _Tester(c.container));
38
+ static renderSync = (component) => new _Tester(render(component).container);
39
+ byText = (text, index) => index ? screen.getAllByText(text)[index] : screen.getByText(text);
40
+ atText = (text, index) => new ElementTester(() => this.byText(text, index));
41
+ byId = (id, index) => index ? screen.getAllByTestId(id.toString())[index] : screen.getByTestId(id.toString());
42
+ atId = (id, index) => new ElementTester(() => this.byId(id, index));
43
+ byRole = (role, index) => index ? screen.getAllByRole(role)[index] : screen.getByRole(role);
44
+ atRole = (role, index) => new ElementTester(() => this.byRole(role, index));
45
+ byRow = (index) => index ? screen.getAllByRole("row")[index] : screen.getByRole("row");
46
+ atRow = (index) => new ElementTester(() => this.byRow(index));
47
+ byTitle = (title, index) => index ? screen.getAllByTitle(title)[index] : screen.getByTitle(title);
48
+ atTitle = (title, index) => new ElementTester(() => this.byTitle(title, index));
49
+ byPlaceholder = (placeholder, index) => index ? screen.getAllByPlaceholderText(placeholder)[index] : screen.getByPlaceholderText(placeholder);
50
+ atPlaceholder = (placeholder, index) => new ElementTester(() => this.byPlaceholder(placeholder, index));
51
+ submit = (id = "btn-submit") => this.atId(id);
52
+ };
53
+ var rendersWait = async (component) => await Tester.render(component);
54
+ var renders = (component) => Tester.renderSync(component);
55
+
56
+ export {
57
+ Tester,
58
+ rendersWait,
59
+ renders,
60
+ ElementTester
61
+ };
62
+ //# sourceMappingURL=chunk-PVNTZBJD.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Tester.ts","../src/ElementTester.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","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,QAAQ,cAAc;;;ACA/B,SAAS,WAAW,SAAS,iCAAiC;AAC9D,SAAS,WAAW,aAAa;AAG1B,IAAM,gBAAN,MAAoB;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;;;ADvBO,IAAM,SAAN,MAAM,QAAO;AAAA,EAClB,YAA4B,WAAwB;AAAxB;AAAA,EAAyB;AAAA,EAErD,OAAO,SAAS,CAAC,cAA6C,cAAc,SAAS,EAAE,KAAK,OAAK,IAAI,QAAO,EAAE,SAAS,CAAC;AAAA,EACxH,OAAO,aAAa,CAAC,cAAoC,IAAI,QAAO,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,IAAM,cAAc,OAAO,cAA6C,MAAM,OAAO,OAAO,SAAS;AACrG,IAAM,UAAU,CAAC,cAAoC,OAAO,WAAW,SAAS;","names":[]}
@@ -0,0 +1,15 @@
1
+ // src/waitForRender.ts
2
+ import { act, render, waitFor } from "@testing-library/react";
3
+ async function waitForRender(ui, options) {
4
+ let r = {};
5
+ await act(async () => {
6
+ r = render(ui, options);
7
+ await waitFor(() => r.container, { container: r.container });
8
+ });
9
+ return r;
10
+ }
11
+
12
+ export {
13
+ waitForRender
14
+ };
15
+ //# sourceMappingURL=chunk-ZGG2OAIC.mjs.map
@@ -1 +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":[]}
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/dist/index.js CHANGED
@@ -3,6 +3,10 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
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
+ };
6
10
  var __copyProps = (to, from, except, desc) => {
7
11
  if (from && typeof from === "object" || typeof from === "function") {
8
12
  for (let key of __getOwnPropNames(from))
@@ -11,17 +15,88 @@ var __copyProps = (to, from, except, desc) => {
11
15
  }
12
16
  return to;
13
17
  };
14
- var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
16
21
  var src_exports = {};
22
+ __export(src_exports, {
23
+ ElementTester: () => ElementTester,
24
+ Tester: () => Tester,
25
+ renders: () => renders,
26
+ rendersWait: () => rendersWait,
27
+ waitForRender: () => waitForRender
28
+ });
17
29
  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);
30
+
31
+ // src/ElementTester.ts
32
+ var import_react3 = require("@testing-library/react");
33
+ var import_easy = require("@thisisagile/easy");
34
+
35
+ // src/Tester.ts
36
+ var import_react2 = require("@testing-library/react");
37
+
38
+ // src/waitForRender.ts
39
+ var import_react = require("@testing-library/react");
40
+ async function waitForRender(ui, options) {
41
+ let r = {};
42
+ await (0, import_react.act)(async () => {
43
+ r = (0, import_react.render)(ui, options);
44
+ await (0, import_react.waitFor)(() => r.container, { container: r.container });
45
+ });
46
+ return r;
47
+ }
48
+
49
+ // src/Tester.ts
50
+ var Tester = class _Tester {
51
+ constructor(container) {
52
+ this.container = container;
53
+ }
54
+ static render = (component) => waitForRender(component).then((c) => new _Tester(c.container));
55
+ static renderSync = (component) => new _Tester((0, import_react2.render)(component).container);
56
+ byText = (text, index) => index ? import_react2.screen.getAllByText(text)[index] : import_react2.screen.getByText(text);
57
+ atText = (text, index) => new ElementTester(() => this.byText(text, index));
58
+ byId = (id, index) => index ? import_react2.screen.getAllByTestId(id.toString())[index] : import_react2.screen.getByTestId(id.toString());
59
+ atId = (id, index) => new ElementTester(() => this.byId(id, index));
60
+ byRole = (role, index) => index ? import_react2.screen.getAllByRole(role)[index] : import_react2.screen.getByRole(role);
61
+ atRole = (role, index) => new ElementTester(() => this.byRole(role, index));
62
+ byRow = (index) => index ? import_react2.screen.getAllByRole("row")[index] : import_react2.screen.getByRole("row");
63
+ atRow = (index) => new ElementTester(() => this.byRow(index));
64
+ byTitle = (title, index) => index ? import_react2.screen.getAllByTitle(title)[index] : import_react2.screen.getByTitle(title);
65
+ atTitle = (title, index) => new ElementTester(() => this.byTitle(title, index));
66
+ byPlaceholder = (placeholder, index) => index ? import_react2.screen.getAllByPlaceholderText(placeholder)[index] : import_react2.screen.getByPlaceholderText(placeholder);
67
+ atPlaceholder = (placeholder, index) => new ElementTester(() => this.byPlaceholder(placeholder, index));
68
+ submit = (id = "btn-submit") => this.atId(id);
69
+ };
70
+ var rendersWait = async (component) => await Tester.render(component);
71
+ var renders = (component) => Tester.renderSync(component);
72
+
73
+ // src/ElementTester.ts
74
+ var ElementTester = class {
75
+ constructor(element) {
76
+ this.element = element;
77
+ }
78
+ get value() {
79
+ return this.element()?.value;
80
+ }
81
+ get isValid() {
82
+ return (0, import_easy.tryTo)(() => this.element()).is.defined().map(() => true).or(false);
83
+ }
84
+ get then() {
85
+ return new Tester(this.element());
86
+ }
87
+ click = () => this.element() && import_react3.fireEvent.click(this.element()) ? this : void 0;
88
+ awaitClick = () => (0, import_react3.waitFor)(() => import_react3.fireEvent.click(this.element()));
89
+ mouseDown = (index) => this.element() && import_react3.fireEvent.mouseDown((0, import_easy.isDefined)(index) ? this.element().children[index] : this.element()) ? this : void 0;
90
+ type = (value) => import_react3.fireEvent.change(this.element(), { target: { value } });
91
+ wait = () => (0, import_react3.waitFor)(this.element);
92
+ waitForRemove = () => (0, import_react3.waitForElementToBeRemoved)(this.element);
93
+ };
21
94
  // Annotate the CommonJS export names for ESM import in node:
22
95
  0 && (module.exports = {
23
- ...require("./ElementTester"),
24
- ...require("./Tester"),
25
- ...require("./waitForRender")
96
+ ElementTester,
97
+ Tester,
98
+ renders,
99
+ rendersWait,
100
+ waitForRender
26
101
  });
27
102
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +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":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/ElementTester.ts","../src/Tester.ts","../src/waitForRender.ts"],"sourcesContent":["export * from './ElementTester';\nexport * from './Tester';\nexport * from './waitForRender';\n","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","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","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":"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","names":["import_react","import_react"]}
@@ -1,12 +1,6 @@
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
- }
1
+ import {
2
+ waitForRender
3
+ } from "./chunk-ZGG2OAIC.mjs";
10
4
  export {
11
5
  waitForRender
12
6
  };
@@ -1 +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":[]}
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@thisisagile/easy-test-react",
3
- "version": "15.26.1",
3
+ "version": "15.27.0",
4
4
  "description": "Straightforward wrapper library for testing-library/react",
5
5
  "author": "Sander Hoogendoorn",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
8
8
  "module": "dist/index.mjs",
9
- "types": "dist/index",
9
+ "types": "dist/index.d.ts",
10
10
  "repository": {
11
11
  "type": "git",
12
12
  "url": "git@github.com:thisisagile/easy.git"
@@ -27,6 +27,7 @@
27
27
  "test": "yarn g:jest --coverage",
28
28
  "prepack": "yarn g:copy-readme"
29
29
  },
30
+ "sideEffects": false,
30
31
  "files": [
31
32
  "dist",
32
33
  "src"
@@ -35,7 +36,7 @@
35
36
  "access": "public"
36
37
  },
37
38
  "devDependencies": {
38
- "@thisisagile/easy-test": "15.26.1",
39
+ "@thisisagile/easy-test": "15.27.0",
39
40
  "jest-environment-jsdom": "^29.7.0",
40
41
  "weak-napi": "^2.0.2"
41
42
  },
@@ -43,7 +44,7 @@
43
44
  "@testing-library/dom": "^9.3.4",
44
45
  "@testing-library/jest-dom": "^6.4.2",
45
46
  "@testing-library/react": "^14.2.1",
46
- "@thisisagile/easy": "^15.26.1",
47
+ "@thisisagile/easy": "^15.27.0",
47
48
  "@types/react": "^18.2.60",
48
49
  "react": "^18.2.0",
49
50
  "react-dom": "^18.2.0"
@@ -1,51 +0,0 @@
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
@@ -1 +0,0 @@
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":[]}
package/dist/Tester.js DELETED
@@ -1,57 +0,0 @@
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
@@ -1 +0,0 @@
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":[]}
@@ -1,37 +0,0 @@
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