@mysetup/test-helpers 1.0.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.
- package/README.md +30 -0
- package/dist/helpers/index.d.ts +32 -0
- package/dist/helpers/index.d.ts.map +1 -0
- package/dist/helpers/index.js +147 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/package.json +60 -0
package/README.md
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# @mysetup/test-helpers
|
|
2
|
+
|
|
3
|
+
A collection of helpful testing functions based on [React Testing Library](https://testing-library.com/docs/react-testing-library/intro/).
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
### `setupRender`
|
|
8
|
+
|
|
9
|
+
`setupRender` accepts a component and default props, and returns a `render` function that will merge additional props to the component.
|
|
10
|
+
|
|
11
|
+
```tsx
|
|
12
|
+
import { screen, setupRender } from "../../test-helpers";
|
|
13
|
+
|
|
14
|
+
const render = setupRender(<Component />, { text: "default props" });
|
|
15
|
+
|
|
16
|
+
describe("setupRender", () => {
|
|
17
|
+
test("default props", () => {
|
|
18
|
+
render();
|
|
19
|
+
|
|
20
|
+
expect(screen.getByText("default prop")).toBeInTheDocument();
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
test("default props", () => {
|
|
24
|
+
render({ moreText: "more props" });
|
|
25
|
+
|
|
26
|
+
expect(screen.getByText("default props")).toBeInTheDocument();
|
|
27
|
+
expect(screen.getByText("more props")).toBeInTheDocument();
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
```
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { render, type RenderOptions, type RenderHookOptions } from "@testing-library/react";
|
|
2
|
+
import { userEvent } from "@testing-library/user-event";
|
|
3
|
+
import { type ReactNode, type ComponentType } from "react";
|
|
4
|
+
import { type ProviderProps, type AppState } from "@mysetup/types";
|
|
5
|
+
type MockOptions = MockNavigation & MockBreakpoint;
|
|
6
|
+
interface MockNavigation {
|
|
7
|
+
navigation?: {
|
|
8
|
+
pathname?: string;
|
|
9
|
+
params?: {
|
|
10
|
+
searchTerm?: string;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
interface MockBreakpoint {
|
|
15
|
+
breakpoint?: number;
|
|
16
|
+
}
|
|
17
|
+
interface ContextProvierProps extends ProviderProps {
|
|
18
|
+
children: ReactNode;
|
|
19
|
+
}
|
|
20
|
+
export declare const setupRender: <Props extends Record<string, any>>(Component: ComponentType<Props>, defaultProps?: Partial<Props & {
|
|
21
|
+
"data-testid": string;
|
|
22
|
+
}>, defaultOptions?: RenderOptions & MockOptions) => ((passedProps?: Partial<Props>, passedOptions?: RenderOptions & MockOptions) => ReturnType<typeof render>);
|
|
23
|
+
export declare const setupRenderWithProvider: <Props extends Record<string, any>>(Component: ComponentType<Props>, Provider: ComponentType<ContextProvierProps>, defaultProps?: Partial<Props & {
|
|
24
|
+
"data-testid": string;
|
|
25
|
+
}>, defaultAppState?: Partial<AppState>, defaultOptions?: RenderOptions & MockOptions) => ((passedProps?: Partial<Props>, passedAppState?: Partial<AppState>, passedOptions?: RenderOptions & MockOptions) => ReturnType<typeof render>);
|
|
26
|
+
export declare const setupRenderHook: <Result, Props>(hook: (initialProps: Props) => Result, defaultProps?: Props, defaultOptions?: RenderHookOptions<Props> & MockOptions) => (passedProps?: Partial<Props>, passedOptions?: RenderHookOptions<Props> & MockOptions) => import("@testing-library/react").RenderHookResult<Result, Props>;
|
|
27
|
+
export declare const setupRenderHookWithProvider: <Result, Props>(hook: (initialProps: Props) => Result, Provider: ComponentType<ContextProvierProps>, defaultProps?: Props, defaultAppState?: Partial<AppState>, defaultOptions?: RenderHookOptions<Props> & MockOptions) => (passedProps?: Partial<Props>, passedAppState?: Partial<AppState> | null, passedOptions?: RenderHookOptions<Props> & MockOptions) => import("@testing-library/react").RenderHookResult<Result, Props>;
|
|
28
|
+
export declare const getById: (container: HTMLElement, id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined) => HTMLElement | null;
|
|
29
|
+
export { userEvent };
|
|
30
|
+
export * from "jest-axe";
|
|
31
|
+
export * from "@testing-library/react";
|
|
32
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../helpers/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEH,MAAM,EAEN,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACzB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAc,EAAE,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAElE,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAEnE,KAAK,WAAW,GAAG,cAAc,GAAG,cAAc,CAAC;AAEnD,UAAU,cAAc;IACpB,UAAU,CAAC,EAAE;QACT,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE;YACL,UAAU,CAAC,EAAE,MAAM,CAAC;SACvB,CAAC;KACL,CAAC;CACL;AAED,UAAU,cAAc;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAeD,UAAU,mBAAoB,SAAQ,aAAa;IAC/C,QAAQ,EAAE,SAAS,CAAC;CACvB;AAED,eAAO,MAAM,WAAW,GAEpB,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,aAEtB,aAAa,CAAC,KAAK,CAAC,iBACjB,OAAO,CAAC,KAAK,GAAG;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,mBACxC,aAAa,GAAG,WAAW,KAC5C,CAAC,CACA,WAAW,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,EAC5B,aAAa,CAAC,EAAE,aAAa,GAAG,WAAW,KAC1C,UAAU,CAAC,OAAO,MAAM,CAAC,CAiD7B,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAEhC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,aAEtB,aAAa,CAAC,KAAK,CAAC,YACrB,aAAa,CAAC,mBAAmB,CAAC,iBAC9B,OAAO,CAAC,KAAK,GAAG;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,oBACvC,OAAO,CAAC,QAAQ,CAAC,mBAClB,aAAa,GAAG,WAAW,KAC5C,CAAC,CACA,WAAW,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,EAC5B,cAAc,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAClC,aAAa,CAAC,EAAE,aAAa,GAAG,WAAW,KAC1C,UAAU,CAAC,OAAO,MAAM,CAAC,CAuD7B,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,MAAM,EAAE,KAAK,QACnC,CAAC,YAAY,EAAE,KAAK,KAAK,MAAM,iBACtB,KAAK,mBACH,iBAAiB,CAAC,KAAK,CAAC,GAAG,WAAW,oBAGrC,OAAO,CAAC,KAAK,CAAC,kBACb,iBAAiB,CAAC,KAAK,CAAC,GAAG,WAAW,qEAwB5D,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAI,MAAM,EAAE,KAAK,QAC/C,CAAC,YAAY,EAAE,KAAK,KAAK,MAAM,YAC3B,aAAa,CAAC,mBAAmB,CAAC,iBAC7B,KAAK,oBACF,OAAO,CAAC,QAAQ,CAAC,mBAClB,iBAAiB,CAAC,KAAK,CAAC,GAAG,WAAW,oBAGrC,OAAO,CAAC,KAAK,CAAC,mBACX,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,kBAC1B,iBAAiB,CAAC,KAAK,CAAC,GAAG,WAAW,qEA+B5D,CAAC;AAEF,eAAO,MAAM,OAAO,qKAAoC,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,CAAC;AACrB,cAAc,UAAU,CAAC;AACzB,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
25
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
26
|
+
};
|
|
27
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
28
|
+
var t = {};
|
|
29
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
30
|
+
t[p] = s[p];
|
|
31
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
32
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
33
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
34
|
+
t[p[i]] = s[p[i]];
|
|
35
|
+
}
|
|
36
|
+
return t;
|
|
37
|
+
};
|
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.userEvent = exports.getById = exports.setupRenderHookWithProvider = exports.setupRenderHook = exports.setupRenderWithProvider = exports.setupRender = void 0;
|
|
43
|
+
var react_1 = require("@testing-library/react");
|
|
44
|
+
var globals_1 = require("@jest/globals");
|
|
45
|
+
var user_event_1 = require("@testing-library/user-event");
|
|
46
|
+
Object.defineProperty(exports, "userEvent", { enumerable: true, get: function () { return user_event_1.userEvent; } });
|
|
47
|
+
var react_2 = __importDefault(require("react"));
|
|
48
|
+
var navigation_1 = require("next/navigation");
|
|
49
|
+
globals_1.jest.doMock("next/navigation", function () { return ({
|
|
50
|
+
usePathname: globals_1.jest.fn(),
|
|
51
|
+
useSearchParams: globals_1.jest.fn(),
|
|
52
|
+
useRouter: function () { return ({
|
|
53
|
+
push: globals_1.jest.fn(),
|
|
54
|
+
replace: globals_1.jest.fn(),
|
|
55
|
+
forward: globals_1.jest.fn(),
|
|
56
|
+
back: globals_1.jest.fn(),
|
|
57
|
+
prefetch: globals_1.jest.fn(),
|
|
58
|
+
refresh: globals_1.jest.fn(),
|
|
59
|
+
}); },
|
|
60
|
+
}); });
|
|
61
|
+
var setupRender = function (Component, defaultProps, defaultOptions) {
|
|
62
|
+
if (defaultProps === void 0) { defaultProps = {}; }
|
|
63
|
+
if (defaultOptions === void 0) { defaultOptions = {}; }
|
|
64
|
+
return function (passedProps, passedOptions) {
|
|
65
|
+
var _a;
|
|
66
|
+
if (passedProps === void 0) { passedProps = {}; }
|
|
67
|
+
if (passedOptions === void 0) { passedOptions = {}; }
|
|
68
|
+
var props = __assign(__assign({}, defaultProps), passedProps);
|
|
69
|
+
var _b = __assign(__assign({}, defaultOptions), passedOptions), _c = _b.navigation, navigation = _c === void 0 ? {} : _c, Wrapper = _b.wrapper, breakpoint = _b.breakpoint, options = __rest(_b, ["navigation", "wrapper", "breakpoint"]);
|
|
70
|
+
if (navigation.pathname) {
|
|
71
|
+
navigation_1.usePathname.mockReturnValue(navigation.pathname);
|
|
72
|
+
}
|
|
73
|
+
if ((_a = navigation.params) === null || _a === void 0 ? void 0 : _a.searchTerm) {
|
|
74
|
+
navigation_1.useSearchParams.mockReturnValue(new URLSearchParams("searchTerm=".concat(navigation.params.searchTerm)));
|
|
75
|
+
}
|
|
76
|
+
if (breakpoint) {
|
|
77
|
+
Object.defineProperty(window, "innerWidth", {
|
|
78
|
+
value: breakpoint,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
return (0, react_1.render)(react_2.default.createElement(react_2.default.Fragment, null, Wrapper ? (react_2.default.createElement(Wrapper, null,
|
|
82
|
+
react_2.default.createElement(Component, __assign({}, props)))) : (react_2.default.createElement(Component, __assign({}, props)))), options);
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
exports.setupRender = setupRender;
|
|
86
|
+
var setupRenderWithProvider = function (Component, Provider, defaultProps, defaultAppState, defaultOptions) {
|
|
87
|
+
if (defaultProps === void 0) { defaultProps = {}; }
|
|
88
|
+
if (defaultAppState === void 0) { defaultAppState = {}; }
|
|
89
|
+
if (defaultOptions === void 0) { defaultOptions = {}; }
|
|
90
|
+
return function (passedProps, passedAppState, passedOptions) {
|
|
91
|
+
var _a;
|
|
92
|
+
if (passedProps === void 0) { passedProps = {}; }
|
|
93
|
+
if (passedAppState === void 0) { passedAppState = {}; }
|
|
94
|
+
if (passedOptions === void 0) { passedOptions = {}; }
|
|
95
|
+
var props = __assign(__assign({}, defaultProps), passedProps);
|
|
96
|
+
var _b = __assign(__assign({}, defaultOptions), passedOptions), _c = _b.navigation, navigation = _c === void 0 ? {} : _c, Wrapper = _b.wrapper, breakpoint = _b.breakpoint, options = __rest(_b, ["navigation", "wrapper", "breakpoint"]);
|
|
97
|
+
var appState = __assign(__assign({}, defaultAppState), passedAppState);
|
|
98
|
+
if (navigation.pathname) {
|
|
99
|
+
navigation_1.usePathname.mockReturnValue(navigation.pathname);
|
|
100
|
+
}
|
|
101
|
+
if ((_a = navigation.params) === null || _a === void 0 ? void 0 : _a.searchTerm) {
|
|
102
|
+
navigation_1.useSearchParams.mockReturnValue(new URLSearchParams("searchTerm=".concat(navigation.params.searchTerm)));
|
|
103
|
+
}
|
|
104
|
+
if (breakpoint) {
|
|
105
|
+
Object.defineProperty(window, "innerWidth", {
|
|
106
|
+
value: breakpoint,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
return (0, react_1.render)(react_2.default.createElement(Provider, { appState: appState, version: "test" }, Wrapper ? (react_2.default.createElement(Wrapper, null,
|
|
110
|
+
react_2.default.createElement(Component, __assign({}, props)))) : (react_2.default.createElement(Component, __assign({}, props)))), options);
|
|
111
|
+
};
|
|
112
|
+
};
|
|
113
|
+
exports.setupRenderWithProvider = setupRenderWithProvider;
|
|
114
|
+
var setupRenderHook = function (hook, defaultProps, defaultOptions) {
|
|
115
|
+
return function (passedProps, passedOptions) {
|
|
116
|
+
if (passedOptions === void 0) { passedOptions = {}; }
|
|
117
|
+
var props = (passedProps !== null && passedProps !== void 0 ? passedProps : defaultProps);
|
|
118
|
+
var _a = __assign(__assign({}, defaultOptions), passedOptions), _b = _a.navigation, navigation = _b === void 0 ? {} : _b, Wrapper = _a.wrapper, options = __rest(_a, ["navigation", "wrapper"]);
|
|
119
|
+
if (navigation.pathname) {
|
|
120
|
+
navigation_1.usePathname.mockReturnValue(navigation.pathname);
|
|
121
|
+
}
|
|
122
|
+
return (0, react_1.renderHook)(function () { return hook(props); }, __assign(__assign({}, options), { wrapper: function (_a) {
|
|
123
|
+
var children = _a.children;
|
|
124
|
+
return (react_2.default.createElement(react_2.default.Fragment, null, Wrapper ? react_2.default.createElement(Wrapper, null, children) : children));
|
|
125
|
+
} }));
|
|
126
|
+
};
|
|
127
|
+
};
|
|
128
|
+
exports.setupRenderHook = setupRenderHook;
|
|
129
|
+
var setupRenderHookWithProvider = function (hook, Provider, defaultProps, defaultAppState, defaultOptions) {
|
|
130
|
+
return function (passedProps, passedAppState, passedOptions) {
|
|
131
|
+
if (passedOptions === void 0) { passedOptions = {}; }
|
|
132
|
+
var props = (passedProps !== null && passedProps !== void 0 ? passedProps : defaultProps);
|
|
133
|
+
var _a = __assign(__assign({}, defaultOptions), passedOptions), _b = _a.navigation, navigation = _b === void 0 ? {} : _b, Wrapper = _a.wrapper, options = __rest(_a, ["navigation", "wrapper"]);
|
|
134
|
+
var appState = __assign(__assign({}, defaultAppState), passedAppState);
|
|
135
|
+
if (navigation.pathname) {
|
|
136
|
+
navigation_1.usePathname.mockReturnValue(navigation.pathname);
|
|
137
|
+
}
|
|
138
|
+
return (0, react_1.renderHook)(function () { return hook(props); }, __assign(__assign({}, options), { wrapper: function (_a) {
|
|
139
|
+
var children = _a.children;
|
|
140
|
+
return (react_2.default.createElement(Provider, { appState: appState, version: "test" }, Wrapper ? react_2.default.createElement(Wrapper, null, children) : children));
|
|
141
|
+
} }));
|
|
142
|
+
};
|
|
143
|
+
};
|
|
144
|
+
exports.setupRenderHookWithProvider = setupRenderHookWithProvider;
|
|
145
|
+
exports.getById = react_1.queryByAttribute.bind(null, "id");
|
|
146
|
+
__exportStar(require("jest-axe"), exports);
|
|
147
|
+
__exportStar(require("@testing-library/react"), exports);
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.tsx"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./helpers"), exports);
|
package/package.json
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mysetup/test-helpers",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"files": [
|
|
7
|
+
"dist"
|
|
8
|
+
],
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js",
|
|
13
|
+
"require": "./dist/index.js"
|
|
14
|
+
},
|
|
15
|
+
"./package.json": "./package.json"
|
|
16
|
+
},
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "rm -rf ./dist && tsc -p tsconfig.build.json",
|
|
19
|
+
"lint": "eslint .",
|
|
20
|
+
"test": "jest",
|
|
21
|
+
"test:update": "pnpm test -- -u",
|
|
22
|
+
"test:coverage": "jest --coverage",
|
|
23
|
+
"typecheck": "tsc --noEmit",
|
|
24
|
+
"format": "prettier --write \"**/*.{ts,tsx,md,js,mjs,json}\"",
|
|
25
|
+
"checks": "pnpm typecheck && pnpm lint && pnpm test",
|
|
26
|
+
"clean": "rm -rf node_modules .swc dist pnpm-lock.yaml && echo \"✅ Successfully removed \""
|
|
27
|
+
},
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"@testing-library/dom": "^10.4.0",
|
|
30
|
+
"@testing-library/jest-dom": "^6.6.3",
|
|
31
|
+
"@testing-library/react": "^16.0.1",
|
|
32
|
+
"@testing-library/user-event": "^14.5.2",
|
|
33
|
+
"@jest/globals": "^29.7.0",
|
|
34
|
+
"react": "^18.3.1",
|
|
35
|
+
"next": "^15.0.2",
|
|
36
|
+
"react-aria": "^3.35.1",
|
|
37
|
+
"react-dom": "^18.3.1"
|
|
38
|
+
},
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"@mysetup/eslint-config": "latest",
|
|
41
|
+
"@mysetup/jest-config": "latest",
|
|
42
|
+
"@mysetup/prettier-config": "latest",
|
|
43
|
+
"@mysetup/tsconfig": "latest",
|
|
44
|
+
"@mysetup/types": "latest",
|
|
45
|
+
"@types/jest": "^29.5.14",
|
|
46
|
+
"@types/jest-axe": "^3.5.9",
|
|
47
|
+
"@types/node": "^22.8.6",
|
|
48
|
+
"@types/react": "^18.3.12",
|
|
49
|
+
"@types/react-dom": "^18.3.1",
|
|
50
|
+
"eslint": "8.57.0",
|
|
51
|
+
"jest": "^29.7.0",
|
|
52
|
+
"jest-axe": "^9.0.0",
|
|
53
|
+
"typescript": "^5.6.3"
|
|
54
|
+
},
|
|
55
|
+
"prettier": "@mysetup/prettier-config",
|
|
56
|
+
"engines": {
|
|
57
|
+
"node": ">=18.0.0"
|
|
58
|
+
},
|
|
59
|
+
"packageManager": "pnpm@9.9.0"
|
|
60
|
+
}
|