diff --git a/package-lock.json b/package-lock.json index e4abac9..bdd2477 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,9 +23,9 @@ "@commitlint/cli": "^13.1.0", "@commitlint/config-conventional": "^13.1.0", "@testing-library/jest-dom": "^5.14.1", - "@testing-library/react": "^12.0.0", + "@testing-library/react": "^13.2.0", "@types/jest": "^27.0.1", - "@types/react": "^17.0.20", + "@types/react": "^18.0.9", "@typescript-eslint/eslint-plugin": "^4.31.0", "@typescript-eslint/parser": "^4.31.0", "babel-jest": "^27.1.0", @@ -38,8 +38,8 @@ "lint-staged": "^11.1.2", "npm-run-all": "^4.1.5", "prettier": "^2.3.2", - "react": "^17.0.2", - "react-dom": "^17.0.2", + "react": "^18.1.0", + "react-dom": "^18.1.0", "standard-version": "^9.3.1", "typescript": "^4.4.2" }, @@ -3806,17 +3806,17 @@ } }, "node_modules/@testing-library/dom": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.2.0.tgz", - "integrity": "sha512-U8cTWENQPHO3QHvxBdfltJ+wC78ytMdg69ASvIdkGdQ/XRg4M9H2vvM3mHddxl+w/fM6NNqzGMwpQoh82v9VIA==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.13.0.tgz", + "integrity": "sha512-9VHgfIatKNXQNaZTtLnalIy0jNZzY35a4S3oi08YAt9Hv1VsfZ/DfA45lM8D/UhtHBGJ4/lGwp0PZkVndRkoOQ==", "dev": true, "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^4.2.0", - "aria-query": "^4.2.2", + "aria-query": "^5.0.0", "chalk": "^4.1.0", - "dom-accessibility-api": "^0.5.6", + "dom-accessibility-api": "^0.5.9", "lz-string": "^1.4.4", "pretty-format": "^27.0.2" }, @@ -3824,6 +3824,15 @@ "node": ">=12" } }, + "node_modules/@testing-library/dom/node_modules/aria-query": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz", + "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, "node_modules/@testing-library/jest-dom": { "version": "5.14.1", "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.14.1.tgz", @@ -3914,20 +3923,21 @@ } }, "node_modules/@testing-library/react": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-12.0.0.tgz", - "integrity": "sha512-sh3jhFgEshFyJ/0IxGltRhwZv2kFKfJ3fN1vTZ6hhMXzz9ZbbcTgmDYM4e+zJv+oiVKKEWZPyqPAh4MQBI65gA==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.2.0.tgz", + "integrity": "sha512-Bprbz/SZVONCJy5f7hcihNCv313IJXdYiv0nSJklIs1SQCIHHNlnGNkosSXnGZTmesyGIcBGNppYhXcc11pb7g==", "dev": true, "dependencies": { "@babel/runtime": "^7.12.5", - "@testing-library/dom": "^8.0.0" + "@testing-library/dom": "^8.5.0", + "@types/react-dom": "^18.0.0" }, "engines": { "node": ">=12" }, "peerDependencies": { - "react": "*", - "react-dom": "*" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, "node_modules/@tootallnate/once": { @@ -4078,9 +4088,9 @@ "dev": true }, "node_modules/@types/react": { - "version": "17.0.20", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.20.tgz", - "integrity": "sha512-wWZrPlihslrPpcKyCSlmIlruakxr57/buQN1RjlIeaaTWDLtJkTtRW429MoQJergvVKc4IWBpRhWw7YNh/7GVA==", + "version": "18.0.9", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.9.tgz", + "integrity": "sha512-9bjbg1hJHUm4De19L1cHiW0Jvx3geel6Qczhjd0qY5VKVE2X5+x77YxAepuCwVh4vrgZJdgEJw48zrhRIeF4Nw==", "dev": true, "dependencies": { "@types/prop-types": "*", @@ -4088,6 +4098,15 @@ "csstype": "^3.0.2" } }, + "node_modules/@types/react-dom": { + "version": "18.0.5", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.5.tgz", + "integrity": "sha512-OWPWTUrY/NIrjsAPkAk1wW9LZeIjSvkXRhclsFO8CZcZGCOg2G0YZy4ft+rOyYxy8B7ui5iZzi9OkDebZ7/QSA==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, "node_modules/@types/scheduler": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", @@ -7173,9 +7192,9 @@ } }, "node_modules/dom-accessibility-api": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.7.tgz", - "integrity": "sha512-ml3lJIq9YjUfM9TUnEPvEYWFSwivwIGBPKpewX7tii7fwCazA8yCioGdqQcNsItPpfFvSJ3VIdMQPj60LJhcQA==", + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz", + "integrity": "sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==", "dev": true }, "node_modules/domexception": { @@ -14112,15 +14131,6 @@ "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", "dev": true }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", @@ -14620,30 +14630,28 @@ } }, "node_modules/react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.1.0.tgz", + "integrity": "sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==", "dev": true, "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" }, "engines": { "node": ">=0.10.0" } }, "node_modules/react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.1.0.tgz", + "integrity": "sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w==", "dev": true, "dependencies": { "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" + "scheduler": "^0.22.0" }, "peerDependencies": { - "react": "17.0.2" + "react": "^18.1.0" } }, "node_modules/react-is": { @@ -15085,13 +15093,12 @@ } }, "node_modules/scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.22.0.tgz", + "integrity": "sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==", "dev": true, "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" } }, "node_modules/semver": { @@ -19761,19 +19768,27 @@ } }, "@testing-library/dom": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.2.0.tgz", - "integrity": "sha512-U8cTWENQPHO3QHvxBdfltJ+wC78ytMdg69ASvIdkGdQ/XRg4M9H2vvM3mHddxl+w/fM6NNqzGMwpQoh82v9VIA==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.13.0.tgz", + "integrity": "sha512-9VHgfIatKNXQNaZTtLnalIy0jNZzY35a4S3oi08YAt9Hv1VsfZ/DfA45lM8D/UhtHBGJ4/lGwp0PZkVndRkoOQ==", "dev": true, "requires": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^4.2.0", - "aria-query": "^4.2.2", + "aria-query": "^5.0.0", "chalk": "^4.1.0", - "dom-accessibility-api": "^0.5.6", + "dom-accessibility-api": "^0.5.9", "lz-string": "^1.4.4", "pretty-format": "^27.0.2" + }, + "dependencies": { + "aria-query": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz", + "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==", + "dev": true + } } }, "@testing-library/jest-dom": { @@ -19845,13 +19860,14 @@ } }, "@testing-library/react": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-12.0.0.tgz", - "integrity": "sha512-sh3jhFgEshFyJ/0IxGltRhwZv2kFKfJ3fN1vTZ6hhMXzz9ZbbcTgmDYM4e+zJv+oiVKKEWZPyqPAh4MQBI65gA==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.2.0.tgz", + "integrity": "sha512-Bprbz/SZVONCJy5f7hcihNCv313IJXdYiv0nSJklIs1SQCIHHNlnGNkosSXnGZTmesyGIcBGNppYhXcc11pb7g==", "dev": true, "requires": { "@babel/runtime": "^7.12.5", - "@testing-library/dom": "^8.0.0" + "@testing-library/dom": "^8.5.0", + "@types/react-dom": "^18.0.0" } }, "@tootallnate/once": { @@ -19999,9 +20015,9 @@ "dev": true }, "@types/react": { - "version": "17.0.20", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.20.tgz", - "integrity": "sha512-wWZrPlihslrPpcKyCSlmIlruakxr57/buQN1RjlIeaaTWDLtJkTtRW429MoQJergvVKc4IWBpRhWw7YNh/7GVA==", + "version": "18.0.9", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.9.tgz", + "integrity": "sha512-9bjbg1hJHUm4De19L1cHiW0Jvx3geel6Qczhjd0qY5VKVE2X5+x77YxAepuCwVh4vrgZJdgEJw48zrhRIeF4Nw==", "dev": true, "requires": { "@types/prop-types": "*", @@ -20009,6 +20025,15 @@ "csstype": "^3.0.2" } }, + "@types/react-dom": { + "version": "18.0.5", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.5.tgz", + "integrity": "sha512-OWPWTUrY/NIrjsAPkAk1wW9LZeIjSvkXRhclsFO8CZcZGCOg2G0YZy4ft+rOyYxy8B7ui5iZzi9OkDebZ7/QSA==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, "@types/scheduler": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", @@ -22409,9 +22434,9 @@ } }, "dom-accessibility-api": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.7.tgz", - "integrity": "sha512-ml3lJIq9YjUfM9TUnEPvEYWFSwivwIGBPKpewX7tii7fwCazA8yCioGdqQcNsItPpfFvSJ3VIdMQPj60LJhcQA==", + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz", + "integrity": "sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==", "dev": true }, "domexception": { @@ -27716,12 +27741,6 @@ "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", "dev": true }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", @@ -28075,24 +28094,22 @@ "dev": true }, "react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.1.0.tgz", + "integrity": "sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==", "dev": true, "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" } }, "react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.1.0.tgz", + "integrity": "sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w==", "dev": true, "requires": { "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" + "scheduler": "^0.22.0" } }, "react-is": { @@ -28431,13 +28448,12 @@ } }, "scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.22.0.tgz", + "integrity": "sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==", "dev": true, "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" } }, "semver": { diff --git a/package.json b/package.json index 5427a17..c809423 100644 --- a/package.json +++ b/package.json @@ -48,9 +48,9 @@ "@commitlint/cli": "^13.1.0", "@commitlint/config-conventional": "^13.1.0", "@testing-library/jest-dom": "^5.14.1", - "@testing-library/react": "^12.0.0", + "@testing-library/react": "^13.2.0", "@types/jest": "^27.0.1", - "@types/react": "^17.0.20", + "@types/react": "^18.0.9", "@typescript-eslint/eslint-plugin": "^4.31.0", "@typescript-eslint/parser": "^4.31.0", "babel-jest": "^27.1.0", @@ -63,8 +63,8 @@ "lint-staged": "^11.1.2", "npm-run-all": "^4.1.5", "prettier": "^2.3.2", - "react": "^17.0.2", - "react-dom": "^17.0.2", + "react": "^18.1.0", + "react-dom": "^18.1.0", "standard-version": "^9.3.1", "typescript": "^4.4.2" }, diff --git a/src/react/components/Link.test.tsx b/src/react/components/Link.test.tsx index 33e67d0..4dc1c67 100644 --- a/src/react/components/Link.test.tsx +++ b/src/react/components/Link.test.tsx @@ -2,7 +2,7 @@ import { createMemoryHistory } from "history"; import React from "react"; import { useRoutes } from "../hooks/useRoutes"; import { Path, SingleHash } from "../shorthand"; -import { renderInHistory, screen } from "../test-utils"; +import { fireEvent, renderInHistory, screen } from "../test-utils"; import { Link } from "./Link"; describe("Link", () => { @@ -33,7 +33,7 @@ describe("Link", () => { renderInHistory(history, ); expect(screen.queryByText("I AM BAR")).toBeNull(); expect(history.index).toBe(0); - screen.queryByTestId("link")?.click(); + fireEvent.click(screen.queryByTestId("link")!); expect(screen.queryByText("I AM BAR")).toBeInTheDocument(); expect(history.index).toBe(1); expect(history.location).toMatchObject({ @@ -162,7 +162,7 @@ describe("Link", () => { renderInHistory(history, ); expect(screen.queryByText("I AM BAR")).toBeInTheDocument(); expect(screen.queryByTestId("link")?.getAttribute("href")).toBe("/foo/bar"); - screen.queryByTestId("link")?.click(); + fireEvent.click(screen.queryByTestId("link")!); expect(history.location).toMatchObject({ pathname: "/foo/bar", state: null, diff --git a/src/react/components/RoconRoot.tsx b/src/react/components/RoconRoot.tsx index 4cc9836..431eb7b 100644 --- a/src/react/components/RoconRoot.tsx +++ b/src/react/components/RoconRoot.tsx @@ -5,6 +5,7 @@ import { LocationContext } from "../contexts/LocationContext"; export type RoconRootProps = { history?: History; + children?: React.ReactNode; }; export const RoconRoot: React.FC = memo((props) => { diff --git a/src/react/hooks/useNavigate.test.tsx b/src/react/hooks/useNavigate.test.tsx index 0bd1e61..f327af9 100644 --- a/src/react/hooks/useNavigate.test.tsx +++ b/src/react/hooks/useNavigate.test.tsx @@ -1,7 +1,7 @@ import { createMemoryHistory } from "history"; import React from "react"; import { Path, SingleHash } from "../shorthand"; -import { renderInHistory, screen } from "../test-utils"; +import { fireEvent, renderInHistory, screen } from "../test-utils"; import { useNavigate } from "./useNavigate"; import { useRoutes } from "./useRoutes"; @@ -34,7 +34,7 @@ describe("useNavigate", () => { renderInHistory(history, ); expect(screen.queryByText("I AM BAR")).toBeNull(); expect(history.index).toBe(0); - screen.queryByTestId("button")?.click(); + fireEvent.click(screen.queryByTestId("button")!); expect(screen.queryByText("I AM BAR")).toBeInTheDocument(); expect(history.index).toBe(1); expect(history.location).toMatchObject({ @@ -73,7 +73,7 @@ describe("useNavigate", () => { renderInHistory(history, ); expect(screen.queryByText("I AM BAR")).toBeNull(); expect(history.index).toBe(0); - screen.queryByTestId("button")?.click(); + fireEvent.click(screen.queryByTestId("button")!); expect(screen.queryByText("I AM BAR")).toBeInTheDocument(); expect(history.index).toBe(1); expect(history.location).toMatchObject({ @@ -112,7 +112,7 @@ describe("useNavigate", () => { renderInHistory(history, ); expect(screen.queryByText("I AM BAR")).toBeNull(); expect(history.index).toBe(0); - screen.queryByTestId("button")?.click(); + fireEvent.click(screen.queryByTestId("button")!); expect(screen.queryByText("I AM BAR")).toBeInTheDocument(); expect(history.index).toBe(0); expect(history.location).toMatchObject({ @@ -152,7 +152,7 @@ describe("useNavigate", () => { renderInHistory(history, ); expect(screen.queryByText("I AM BAR")).toBeNull(); expect(history.index).toBe(0); - screen.queryByTestId("button")?.click(); + fireEvent.click(screen.queryByTestId("button")!); expect(screen.queryByText("I AM BAR")).toBeInTheDocument(); expect(history.index).toBe(1); expect(history.location).toMatchObject({ diff --git a/src/react/hooks/useRoutes.test.tsx b/src/react/hooks/useRoutes.test.tsx index da9e7b7..515e160 100644 --- a/src/react/hooks/useRoutes.test.tsx +++ b/src/react/hooks/useRoutes.test.tsx @@ -4,12 +4,12 @@ import { LocationNotFoundError, } from "../errors/LocationNotFoundError"; import { Path } from "../shorthand"; -import { renderInLocation, screen } from "../test-utils"; +import { fireEvent, renderInLocation, screen } from "../test-utils"; import { useNavigate } from "./useNavigate"; import { useRoutes } from "./useRoutes"; class LocationNotFoundErrorBoundary extends React.Component< - {}, + {children: React.ReactNode}, { error?: LocationNotFoundError; } @@ -198,7 +198,7 @@ describe("useRoutes", () => { ); expect(screen.queryByText("I am foo")).toBeInTheDocument(); expect(screen.queryByText("hogehoge")).toBeInTheDocument(); - screen.queryByTestId("fugaButton")?.click(); + fireEvent.click(screen.queryByTestId("fugaButton")!); expect(screen.queryByText("I am foo")).toBeInTheDocument(); expect(screen.queryByText("fugafuga")).toBeInTheDocument(); }); @@ -206,8 +206,8 @@ describe("useRoutes", () => { describe("React Component as action", () => { it("1", () => { const FooComponent = () => { - const loc = useState("foo"); - return

I am {loc}

; + const [loc, _] = useState("foo"); + return

{`I am ${loc}`}

; }; const location = { pathname: "/foo", diff --git a/src/react/hooks/useRoutes.tsx b/src/react/hooks/useRoutes.tsx index 069584c..5615ad2 100644 --- a/src/react/hooks/useRoutes.tsx +++ b/src/react/hooks/useRoutes.tsx @@ -41,7 +41,7 @@ export const useRoutes = (builder: ReactRouteBuilder): ReactElement | null => { const result = React.createElement( resolved.route.action, resolved.match as never - ); + ) as unknown as React.ReactNode; const routeContextValue = { route: resolved.route, ancestorRoutes,