Skip to content

feat: use drawer instead of popover for book filters #24

feat: use drawer instead of popover for book filters

feat: use drawer instead of popover for book filters #24

Triggered via pull request November 11, 2026 23:16
Status Failure
Total duration 1m 3s
Artifacts –

frontend-test.yml

on: pull_request
Fit to window
Zoom out
Zoom in

Annotations

10 errors
app/routes/books.test.tsx > BooksPage > shows the books and the number of results from the API: frontend/app/hooks/useIsMobile.ts#L7
TestingLibraryElementError: Unable to find role="button" and name `/^Favorite /` Ignored nodes: comments, script, style <body> <div> <h2> Unexpected Application Error! </h2> <h3 style="font-style: italic;" > window.matchMedia is not a function </h3> <pre style="padding: 0.5rem; background-color: rgba(200, 200, 200, 0.5);" > TypeError: window.matchMedia is not a function at getSnapshot (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:7:19) at mountSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8507:24) at Object.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28939:16) at process.env.NODE_ENV.exports.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react@19.3.1/node_modules/react/cjs/react.development.js:1316:34) at useMediaQuery (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:19:12) at SearchBar (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/components/books/SearchBar/SearchBar.tsx:42:20) at Object.react_stack_bottom_frame (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28571:20) at renderWithHooks (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8030:22) at updateFunctionComponent (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:10569:19) at beginWork (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:12205:18) </pre> <p> 💿 Hey developer 👋 </p> <p> You can provide a way better UX than this when your app throws errors by providing your own <code style="padding: 2px 4px; background-color: rgba(200, 200, 200, 0.5);" > ErrorBoundary </code> or <code style="padding: 2px 4px; background-color: rgba(200, 200, 200, 0.5);" > errorElement </code> prop on your route. </p> </div> </body> Ignored nodes: comments, script, style <body> <div> <h2> Unexpected Application Error! </h2> <h3 style="font-style: italic;" > window.matchMedia is not a function </h3> <pre style="padding: 0.5rem; background-color: rgba(200, 200, 200, 0.5);" > TypeError: window.matchMedia is not a function at getSnapshot (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:7:19) at mountSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8507:24) at Object.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28939:16) at process.env.NODE_ENV.exports.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react@19.3.1/node_modules/react/cjs/react.development.js:1316:34) at useMediaQuery (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/f
app/routes/books.test.tsx > BooksPage > sends the search, filters, sort and page from the URL to the API: frontend/app/hooks/useIsMobile.ts#L7
TestingLibraryElementError: Unable to find an element with the text: 15 results. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style <body> <div> <h2> Unexpected Application Error! </h2> <h3 style="font-style: italic;" > window.matchMedia is not a function </h3> <pre style="padding: 0.5rem; background-color: rgba(200, 200, 200, 0.5);" > TypeError: window.matchMedia is not a function at getSnapshot (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:7:19) at mountSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8507:24) at Object.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28939:16) at process.env.NODE_ENV.exports.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react@19.3.1/node_modules/react/cjs/react.development.js:1316:34) at useMediaQuery (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:19:12) at SearchBar (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/components/books/SearchBar/SearchBar.tsx:42:20) at Object.react_stack_bottom_frame (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28571:20) at renderWithHooks (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8030:22) at updateFunctionComponent (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:10569:19) at beginWork (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:12205:18) </pre> <p> 💿 Hey developer 👋 </p> <p> You can provide a way better UX than this when your app throws errors by providing your own <code style="padding: 2px 4px; background-color: rgba(200, 200, 200, 0.5);" > ErrorBoundary </code> or <code style="padding: 2px 4px; background-color: rgba(200, 200, 200, 0.5);" > errorElement </code> prop on your route. </p> </div> </body> Ignored nodes: comments, script, style <body> <div> <h2> Unexpected Application Error! </h2> <h3 style="font-style: italic;" > window.matchMedia is not a function </h3> <pre style="padding: 0.5rem; background-color: rgba(200, 200, 200, 0.5);" > TypeError: window.matchMedia is not a function at getSnapshot (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:7:19) at mountSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8507:24) at Object.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28939:16) at process.env.NODE_ENV.exports.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_mo
app/routes/books.test.tsx > BooksPage > tells the user when no books match the search: frontend/app/hooks/useIsMobile.ts#L7
TestingLibraryElementError: Unable to find an element with the text: No books found for this search. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style <body> <div> <h2> Unexpected Application Error! </h2> <h3 style="font-style: italic;" > window.matchMedia is not a function </h3> <pre style="padding: 0.5rem; background-color: rgba(200, 200, 200, 0.5);" > TypeError: window.matchMedia is not a function at getSnapshot (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:7:19) at mountSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8507:24) at Object.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28939:16) at process.env.NODE_ENV.exports.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react@19.3.1/node_modules/react/cjs/react.development.js:1316:34) at useMediaQuery (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:19:12) at SearchBar (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/components/books/SearchBar/SearchBar.tsx:42:20) at Object.react_stack_bottom_frame (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28571:20) at renderWithHooks (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8030:22) at updateFunctionComponent (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:10569:19) at beginWork (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:12205:18) </pre> <p> 💿 Hey developer 👋 </p> <p> You can provide a way better UX than this when your app throws errors by providing your own <code style="padding: 2px 4px; background-color: rgba(200, 200, 200, 0.5);" > ErrorBoundary </code> or <code style="padding: 2px 4px; background-color: rgba(200, 200, 200, 0.5);" > errorElement </code> prop on your route. </p> </div> </body> Ignored nodes: comments, script, style <body> <div> <h2> Unexpected Application Error! </h2> <h3 style="font-style: italic;" > window.matchMedia is not a function </h3> <pre style="padding: 0.5rem; background-color: rgba(200, 200, 200, 0.5);" > TypeError: window.matchMedia is not a function at getSnapshot (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:7:19) at mountSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8507:24) at Object.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28939:16) at process.env.NODE_ENV.exports.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Projec
app/routes/books.test.tsx > BooksPage > suggests books with similar titles when the search has a typo: frontend/app/hooks/useIsMobile.ts#L7
TestingLibraryElementError: Unable to find role="heading" and name "Suggested books" Ignored nodes: comments, script, style <body> <div> <h2> Unexpected Application Error! </h2> <h3 style="font-style: italic;" > window.matchMedia is not a function </h3> <pre style="padding: 0.5rem; background-color: rgba(200, 200, 200, 0.5);" > TypeError: window.matchMedia is not a function at getSnapshot (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:7:19) at mountSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8507:24) at Object.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28939:16) at process.env.NODE_ENV.exports.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react@19.3.1/node_modules/react/cjs/react.development.js:1316:34) at useMediaQuery (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:19:12) at SearchBar (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/components/books/SearchBar/SearchBar.tsx:42:20) at Object.react_stack_bottom_frame (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28571:20) at renderWithHooks (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8030:22) at updateFunctionComponent (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:10569:19) at beginWork (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:12205:18) </pre> <p> 💿 Hey developer 👋 </p> <p> You can provide a way better UX than this when your app throws errors by providing your own <code style="padding: 2px 4px; background-color: rgba(200, 200, 200, 0.5);" > ErrorBoundary </code> or <code style="padding: 2px 4px; background-color: rgba(200, 200, 200, 0.5);" > errorElement </code> prop on your route. </p> </div> </body> Ignored nodes: comments, script, style <body> <div> <h2> Unexpected Application Error! </h2> <h3 style="font-style: italic;" > window.matchMedia is not a function </h3> <pre style="padding: 0.5rem; background-color: rgba(200, 200, 200, 0.5);" > TypeError: window.matchMedia is not a function at getSnapshot (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:7:19) at mountSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8507:24) at Object.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28939:16) at process.env.NODE_ENV.exports.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react@19.3.1/node_modules/react/cjs/react.development.js:1316:34) at useMediaQuery (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project
app/routes/books.test.tsx > BooksPage > pages and sorts the similar titles: frontend/app/hooks/useIsMobile.ts#L7
TestingLibraryElementError: Unable to find role="button" and name `/^Favorite /` Ignored nodes: comments, script, style <body> <div> <h2> Unexpected Application Error! </h2> <h3 style="font-style: italic;" > window.matchMedia is not a function </h3> <pre style="padding: 0.5rem; background-color: rgba(200, 200, 200, 0.5);" > TypeError: window.matchMedia is not a function at getSnapshot (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:7:19) at mountSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8507:24) at Object.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28939:16) at process.env.NODE_ENV.exports.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react@19.3.1/node_modules/react/cjs/react.development.js:1316:34) at useMediaQuery (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:19:12) at SearchBar (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/components/books/SearchBar/SearchBar.tsx:42:20) at Object.react_stack_bottom_frame (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28571:20) at renderWithHooks (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8030:22) at updateFunctionComponent (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:10569:19) at beginWork (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:12205:18) </pre> <p> 💿 Hey developer 👋 </p> <p> You can provide a way better UX than this when your app throws errors by providing your own <code style="padding: 2px 4px; background-color: rgba(200, 200, 200, 0.5);" > ErrorBoundary </code> or <code style="padding: 2px 4px; background-color: rgba(200, 200, 200, 0.5);" > errorElement </code> prop on your route. </p> </div> </body> Ignored nodes: comments, script, style <body> <div> <h2> Unexpected Application Error! </h2> <h3 style="font-style: italic;" > window.matchMedia is not a function </h3> <pre style="padding: 0.5rem; background-color: rgba(200, 200, 200, 0.5);" > TypeError: window.matchMedia is not a function at getSnapshot (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:7:19) at mountSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8507:24) at Object.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28939:16) at process.env.NODE_ENV.exports.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react@19.3.1/node_modules/react/cjs/react.development.js:1316:34) at useMediaQuery (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/f
app/routes/books.test.tsx > BooksPage > suggests top-rated books with the same filters when the search has no results: frontend/app/hooks/useIsMobile.ts#L7
TestingLibraryElementError: Unable to find role="heading" and name "Suggested books" Ignored nodes: comments, script, style <body> <div> <h2> Unexpected Application Error! </h2> <h3 style="font-style: italic;" > window.matchMedia is not a function </h3> <pre style="padding: 0.5rem; background-color: rgba(200, 200, 200, 0.5);" > TypeError: window.matchMedia is not a function at getSnapshot (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:7:19) at mountSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8507:24) at Object.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28939:16) at process.env.NODE_ENV.exports.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react@19.3.1/node_modules/react/cjs/react.development.js:1316:34) at useMediaQuery (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:19:12) at SearchBar (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/components/books/SearchBar/SearchBar.tsx:42:20) at Object.react_stack_bottom_frame (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28571:20) at renderWithHooks (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8030:22) at updateFunctionComponent (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:10569:19) at beginWork (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:12205:18) </pre> <p> 💿 Hey developer 👋 </p> <p> You can provide a way better UX than this when your app throws errors by providing your own <code style="padding: 2px 4px; background-color: rgba(200, 200, 200, 0.5);" > ErrorBoundary </code> or <code style="padding: 2px 4px; background-color: rgba(200, 200, 200, 0.5);" > errorElement </code> prop on your route. </p> </div> </body> Ignored nodes: comments, script, style <body> <div> <h2> Unexpected Application Error! </h2> <h3 style="font-style: italic;" > window.matchMedia is not a function </h3> <pre style="padding: 0.5rem; background-color: rgba(200, 200, 200, 0.5);" > TypeError: window.matchMedia is not a function at getSnapshot (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:7:19) at mountSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8507:24) at Object.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28939:16) at process.env.NODE_ENV.exports.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react@19.3.1/node_modules/react/cjs/react.development.js:1316:34) at useMediaQuery (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project
app/routes/books.test.tsx > BooksPage > suggests top-rated books without filters when the filters have no results: frontend/app/hooks/useIsMobile.ts#L7
TestingLibraryElementError: Unable to find role="heading" and name "Suggested books" Ignored nodes: comments, script, style <body> <div> <h2> Unexpected Application Error! </h2> <h3 style="font-style: italic;" > window.matchMedia is not a function </h3> <pre style="padding: 0.5rem; background-color: rgba(200, 200, 200, 0.5);" > TypeError: window.matchMedia is not a function at getSnapshot (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:7:19) at mountSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8507:24) at Object.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28939:16) at process.env.NODE_ENV.exports.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react@19.3.1/node_modules/react/cjs/react.development.js:1316:34) at useMediaQuery (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:19:12) at SearchBar (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/components/books/SearchBar/SearchBar.tsx:42:20) at Object.react_stack_bottom_frame (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28571:20) at renderWithHooks (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8030:22) at updateFunctionComponent (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:10569:19) at beginWork (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:12205:18) </pre> <p> 💿 Hey developer 👋 </p> <p> You can provide a way better UX than this when your app throws errors by providing your own <code style="padding: 2px 4px; background-color: rgba(200, 200, 200, 0.5);" > ErrorBoundary </code> or <code style="padding: 2px 4px; background-color: rgba(200, 200, 200, 0.5);" > errorElement </code> prop on your route. </p> </div> </body> Ignored nodes: comments, script, style <body> <div> <h2> Unexpected Application Error! </h2> <h3 style="font-style: italic;" > window.matchMedia is not a function </h3> <pre style="padding: 0.5rem; background-color: rgba(200, 200, 200, 0.5);" > TypeError: window.matchMedia is not a function at getSnapshot (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:7:19) at mountSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8507:24) at Object.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28939:16) at process.env.NODE_ENV.exports.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react@19.3.1/node_modules/react/cjs/react.development.js:1316:34) at useMediaQuery (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project
app/routes/books.test.tsx > BooksPage > keeps the user's minimum number of ratings in the suggestions when it is higher: frontend/app/hooks/useIsMobile.ts#L7
TestingLibraryElementError: Unable to find role="button" and name `/^Favorite /` Ignored nodes: comments, script, style <body> <div> <h2> Unexpected Application Error! </h2> <h3 style="font-style: italic;" > window.matchMedia is not a function </h3> <pre style="padding: 0.5rem; background-color: rgba(200, 200, 200, 0.5);" > TypeError: window.matchMedia is not a function at getSnapshot (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:7:19) at mountSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8507:24) at Object.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28939:16) at process.env.NODE_ENV.exports.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react@19.3.1/node_modules/react/cjs/react.development.js:1316:34) at useMediaQuery (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:19:12) at SearchBar (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/components/books/SearchBar/SearchBar.tsx:42:20) at Object.react_stack_bottom_frame (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28571:20) at renderWithHooks (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8030:22) at updateFunctionComponent (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:10569:19) at beginWork (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:12205:18) </pre> <p> 💿 Hey developer 👋 </p> <p> You can provide a way better UX than this when your app throws errors by providing your own <code style="padding: 2px 4px; background-color: rgba(200, 200, 200, 0.5);" > ErrorBoundary </code> or <code style="padding: 2px 4px; background-color: rgba(200, 200, 200, 0.5);" > errorElement </code> prop on your route. </p> </div> </body> Ignored nodes: comments, script, style <body> <div> <h2> Unexpected Application Error! </h2> <h3 style="font-style: italic;" > window.matchMedia is not a function </h3> <pre style="padding: 0.5rem; background-color: rgba(200, 200, 200, 0.5);" > TypeError: window.matchMedia is not a function at getSnapshot (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:7:19) at mountSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8507:24) at Object.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28939:16) at process.env.NODE_ENV.exports.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react@19.3.1/node_modules/react/cjs/react.development.js:1316:34) at useMediaQuery (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/f
app/routes/books.test.tsx > BooksPage > browses through the suggestions on a suggested book's details page: frontend/app/hooks/useIsMobile.ts#L7
TestingLibraryElementError: Unable to find role="link" and name `/^Before They Are Hanged/` Ignored nodes: comments, script, style <body> <div> <h2> Unexpected Application Error! </h2> <h3 style="font-style: italic;" > window.matchMedia is not a function </h3> <pre style="padding: 0.5rem; background-color: rgba(200, 200, 200, 0.5);" > TypeError: window.matchMedia is not a function at getSnapshot (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:7:19) at mountSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8507:24) at Object.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28939:16) at process.env.NODE_ENV.exports.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react@19.3.1/node_modules/react/cjs/react.development.js:1316:34) at useMediaQuery (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:19:12) at SearchBar (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/components/books/SearchBar/SearchBar.tsx:42:20) at Object.react_stack_bottom_frame (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28571:20) at renderWithHooks (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8030:22) at updateFunctionComponent (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:10569:19) at beginWork (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:12205:18) </pre> <p> 💿 Hey developer 👋 </p> <p> You can provide a way better UX than this when your app throws errors by providing your own <code style="padding: 2px 4px; background-color: rgba(200, 200, 200, 0.5);" > ErrorBoundary </code> or <code style="padding: 2px 4px; background-color: rgba(200, 200, 200, 0.5);" > errorElement </code> prop on your route. </p> </div> </body> Ignored nodes: comments, script, style <body> <div> <h2> Unexpected Application Error! </h2> <h3 style="font-style: italic;" > window.matchMedia is not a function </h3> <pre style="padding: 0.5rem; background-color: rgba(200, 200, 200, 0.5);" > TypeError: window.matchMedia is not a function at getSnapshot (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:7:19) at mountSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8507:24) at Object.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28939:16) at process.env.NODE_ENV.exports.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react@19.3.1/node_modules/react/cjs/react.development.js:1316:34) at useMediaQuery (/home/martakam/actions-runner/_work/T37-Project-2/T37-
app/routes/books.test.tsx > BooksPage > shows an error message when the API request fails: frontend/app/hooks/useIsMobile.ts#L7
TestingLibraryElementError: Unable to find role="alert" Ignored nodes: comments, script, style <body> <div> <h2> Unexpected Application Error! </h2> <h3 style="font-style: italic;" > window.matchMedia is not a function </h3> <pre style="padding: 0.5rem; background-color: rgba(200, 200, 200, 0.5);" > TypeError: window.matchMedia is not a function at getSnapshot (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:7:19) at mountSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8507:24) at Object.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28939:16) at process.env.NODE_ENV.exports.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react@19.3.1/node_modules/react/cjs/react.development.js:1316:34) at useMediaQuery (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:19:12) at SearchBar (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/components/books/SearchBar/SearchBar.tsx:42:20) at Object.react_stack_bottom_frame (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28571:20) at renderWithHooks (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8030:22) at updateFunctionComponent (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:10569:19) at beginWork (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:12205:18) </pre> <p> 💿 Hey developer 👋 </p> <p> You can provide a way better UX than this when your app throws errors by providing your own <code style="padding: 2px 4px; background-color: rgba(200, 200, 200, 0.5);" > ErrorBoundary </code> or <code style="padding: 2px 4px; background-color: rgba(200, 200, 200, 0.5);" > errorElement </code> prop on your route. </p> </div> </body> Ignored nodes: comments, script, style <body> <div> <h2> Unexpected Application Error! </h2> <h3 style="font-style: italic;" > window.matchMedia is not a function </h3> <pre style="padding: 0.5rem; background-color: rgba(200, 200, 200, 0.5);" > TypeError: window.matchMedia is not a function at getSnapshot (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMobile.ts:7:19) at mountSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:8507:24) at Object.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom-client.development.js:28939:16) at process.env.NODE_ENV.exports.useSyncExternalStore (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/node_modules/.pnpm/react@19.3.1/node_modules/react/cjs/react.development.js:1316:34) at useMediaQuery (/home/martakam/actions-runner/_work/T37-Project-2/T37-Project-2/frontend/app/hooks/useIsMo