{
  "testModules": [
    {
      "moduleId": "/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/documents/components/ExpirationBadge.test.tsx",
      "tests": [
        {
          "name": "renders nothing for null",
          "fullName": "ExpirationBadge when no expiration date is provided renders nothing for null",
          "state": "passed"
        },
        {
          "name": "renders nothing for undefined",
          "fullName": "ExpirationBadge when no expiration date is provided renders nothing for undefined",
          "state": "passed"
        },
        {
          "name": "renders nothing for empty string",
          "fullName": "ExpirationBadge when no expiration date is provided renders nothing for empty string",
          "state": "passed"
        },
        {
          "name": "shows \"Expired\" badge for past dates",
          "fullName": "ExpirationBadge when document is expired shows \"Expired\" badge for past dates",
          "state": "passed"
        },
        {
          "name": "shows \"Expired\" badge for dates far in the past",
          "fullName": "ExpirationBadge when document is expired shows \"Expired\" badge for dates far in the past",
          "state": "passed"
        },
        {
          "name": "has red styling for expired badge",
          "fullName": "ExpirationBadge when document is expired has red styling for expired badge",
          "state": "passed"
        },
        {
          "name": "shows \"Expires today\" badge",
          "fullName": "ExpirationBadge when document expires today shows \"Expires today\" badge",
          "state": "passed"
        },
        {
          "name": "has amber styling for expiring soon badge",
          "fullName": "ExpirationBadge when document expires today has amber styling for expiring soon badge",
          "state": "passed"
        },
        {
          "name": "shows \"Expires tomorrow\" badge",
          "fullName": "ExpirationBadge when document expires tomorrow shows \"Expires tomorrow\" badge",
          "state": "passed"
        },
        {
          "name": "shows \"Expires in X days\" badge for 15 days",
          "fullName": "ExpirationBadge when document expires within 30 days shows \"Expires in X days\" badge for 15 days",
          "state": "passed"
        },
        {
          "name": "shows \"Expires in X days\" badge for 30 days",
          "fullName": "ExpirationBadge when document expires within 30 days shows \"Expires in X days\" badge for 30 days",
          "state": "passed"
        },
        {
          "name": "shows \"Expires in X days\" badge for 2 days",
          "fullName": "ExpirationBadge when document expires within 30 days shows \"Expires in X days\" badge for 2 days",
          "state": "passed"
        },
        {
          "name": "renders nothing for 31 days out",
          "fullName": "ExpirationBadge when document expires after 30 days renders nothing for 31 days out",
          "state": "passed"
        },
        {
          "name": "renders nothing for dates far in the future",
          "fullName": "ExpirationBadge when document expires after 30 days renders nothing for dates far in the future",
          "state": "passed"
        },
        {
          "name": "applies custom className to the badge",
          "fullName": "ExpirationBadge className prop applies custom className to the badge",
          "state": "passed"
        }
      ]
    },
    {
      "moduleId": "/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/stations/__tests__/api/community-stations.api.test.ts",
      "tests": [
        {
          "name": "Module failed to load (Error)",
          "fullName": "Module failed to load (Error)",
          "state": "failed",
          "errors": [
            {
              "message": "Cannot use 'import.meta' outside a module",
              "name": "Error",
              "stack": "Jest encountered an unexpected token\n\nJest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.\n\nOut of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.\n\nBy default \"node_modules\" folder is ignored by transformers.\n\nHere's what you can do:\n • If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.\n • If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript\n • To have some of your \"node_modules\" files transformed, you can specify a custom \"transformIgnorePatterns\" in your config.\n • If you need a custom transformation specify a \"transform\" option in your config.\n • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the \"moduleNameMapper\" config option.\n\nYou'll find more details and examples of these config options in the docs:\nhttps://jestjs.io/docs/configuration\nFor information about custom transformations, see:\nhttps://jestjs.io/docs/code-transformation\n\nDetails:\n\n/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/core/api/client.ts:46\nconst API_BASE_URL = import.meta.env.VITE_API_BASE_URL || '/api';\n                            ^^^^\n\nSyntaxError: Cannot use 'import.meta' outside a module\n    at new Script (node:vm:117:7)\n    at Runtime.createScriptFromCode (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1505:14)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1399:25)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at Runtime.requireModuleOrMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1048:21)\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/stations/api/community-stations.api.ts:5:1)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1439:24)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at Runtime.requireModuleOrMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1048:21)\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/stations/__tests__/api/community-stations.api.test.ts:6:1)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1439:24)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at jestAdapter (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)\n    at processTicksAndRejections (node:internal/process/task_queues:103:5)\n    at runTestInternal (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:367:16)\n    at runTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:444:34)\n    at Object.worker (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/testWorker.js:106:12)"
            }
          ]
        }
      ]
    },
    {
      "moduleId": "/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/stations/__tests__/api/stations.api.test.ts",
      "tests": [
        {
          "name": "Module failed to load (Error)",
          "fullName": "Module failed to load (Error)",
          "state": "failed",
          "errors": [
            {
              "message": "Cannot use 'import.meta' outside a module",
              "name": "Error",
              "stack": "Jest encountered an unexpected token\n\nJest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.\n\nOut of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.\n\nBy default \"node_modules\" folder is ignored by transformers.\n\nHere's what you can do:\n • If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.\n • If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript\n • To have some of your \"node_modules\" files transformed, you can specify a custom \"transformIgnorePatterns\" in your config.\n • If you need a custom transformation specify a \"transform\" option in your config.\n • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the \"moduleNameMapper\" config option.\n\nYou'll find more details and examples of these config options in the docs:\nhttps://jestjs.io/docs/configuration\nFor information about custom transformations, see:\nhttps://jestjs.io/docs/code-transformation\n\nDetails:\n\n/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/core/api/client.ts:46\nconst API_BASE_URL = import.meta.env.VITE_API_BASE_URL || '/api';\n                            ^^^^\n\nSyntaxError: Cannot use 'import.meta' outside a module\n    at new Script (node:vm:117:7)\n    at Runtime.createScriptFromCode (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1505:14)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1399:25)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at Runtime.requireModuleOrMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1048:21)\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/stations/api/stations.api.ts:5:1)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1439:24)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at Runtime.requireModuleOrMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1048:21)\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/stations/__tests__/api/stations.api.test.ts:6:1)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1439:24)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at jestAdapter (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)\n    at processTicksAndRejections (node:internal/process/task_queues:103:5)\n    at runTestInternal (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:367:16)\n    at runTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:444:34)\n    at Object.worker (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/testWorker.js:106:12)"
            }
          ]
        }
      ]
    },
    {
      "moduleId": "/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/stations/__tests__/hooks/useStationsSearch.test.ts",
      "tests": [
        {
          "name": "Module failed to load (Error)",
          "fullName": "Module failed to load (Error)",
          "state": "failed",
          "errors": [
            {
              "message": "Cannot use 'import.meta' outside a module",
              "name": "Error",
              "stack": "Jest encountered an unexpected token\n\nJest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.\n\nOut of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.\n\nBy default \"node_modules\" folder is ignored by transformers.\n\nHere's what you can do:\n • If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.\n • If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript\n • To have some of your \"node_modules\" files transformed, you can specify a custom \"transformIgnorePatterns\" in your config.\n • If you need a custom transformation specify a \"transform\" option in your config.\n • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the \"moduleNameMapper\" config option.\n\nYou'll find more details and examples of these config options in the docs:\nhttps://jestjs.io/docs/configuration\nFor information about custom transformations, see:\nhttps://jestjs.io/docs/code-transformation\n\nDetails:\n\n/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/core/api/client.ts:46\nconst API_BASE_URL = import.meta.env.VITE_API_BASE_URL || '/api';\n                            ^^^^\n\nSyntaxError: Cannot use 'import.meta' outside a module\n    at new Script (node:vm:117:7)\n    at Runtime.createScriptFromCode (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1505:14)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1399:25)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at Runtime.requireModuleOrMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1048:21)\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/stations/api/stations.api.ts:5:1)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1439:24)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at Runtime._generateMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1690:34)\n    at Runtime.requireMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:996:39)\n    at Runtime.requireModuleOrMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1046:21)\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/stations/hooks/useStationsSearch.ts:6:1)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1439:24)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at Runtime.requireModuleOrMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1048:21)\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/stations/__tests__/hooks/useStationsSearch.test.ts:8:1)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1439:24)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at jestAdapter (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)\n    at processTicksAndRejections (node:internal/process/task_queues:103:5)\n    at runTestInternal (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:367:16)\n    at runTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:444:34)\n    at Object.worker (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/testWorker.js:106:12)"
            }
          ]
        }
      ]
    },
    {
      "moduleId": "/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/documents/components/DocumentPreview.test.tsx",
      "tests": [
        {
          "name": "Module failed to load (Error)",
          "fullName": "Module failed to load (Error)",
          "state": "failed",
          "errors": [
            {
              "message": "Cannot use 'import.meta' outside a module",
              "name": "Error",
              "stack": "Jest encountered an unexpected token\n\nJest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.\n\nOut of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.\n\nBy default \"node_modules\" folder is ignored by transformers.\n\nHere's what you can do:\n • If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.\n • If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript\n • To have some of your \"node_modules\" files transformed, you can specify a custom \"transformIgnorePatterns\" in your config.\n • If you need a custom transformation specify a \"transform\" option in your config.\n • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the \"moduleNameMapper\" config option.\n\nYou'll find more details and examples of these config options in the docs:\nhttps://jestjs.io/docs/configuration\nFor information about custom transformations, see:\nhttps://jestjs.io/docs/code-transformation\n\nDetails:\n\n/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/core/api/client.ts:46\nconst API_BASE_URL = import.meta.env.VITE_API_BASE_URL || '/api';\n                            ^^^^\n\nSyntaxError: Cannot use 'import.meta' outside a module\n    at new Script (node:vm:117:7)\n    at Runtime.createScriptFromCode (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1505:14)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1399:25)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at Runtime.requireModuleOrMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1048:21)\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/documents/api/documents.api.ts:1:1)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1439:24)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at Runtime._generateMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1690:34)\n    at Runtime.requireMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:996:39)\n    at Runtime.requireModuleOrMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1046:21)\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/documents/components/DocumentPreview.tsx:3:1)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1439:24)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at Runtime.requireModuleOrMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1048:21)\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/documents/components/DocumentPreview.test.tsx:7:1)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1439:24)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at jestAdapter (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)\n    at processTicksAndRejections (node:internal/process/task_queues:103:5)\n    at runTestInternal (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:367:16)\n    at runTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:444:34)\n    at Object.worker (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/testWorker.js:106:12)"
            }
          ]
        }
      ]
    },
    {
      "moduleId": "/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/stations/__tests__/hooks/useCommunityStations.test.ts",
      "tests": [
        {
          "name": "Module failed to load (Error)",
          "fullName": "Module failed to load (Error)",
          "state": "failed",
          "errors": [
            {
              "message": "Cannot use 'import.meta' outside a module",
              "name": "Error",
              "stack": "Jest encountered an unexpected token\n\nJest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax.\n\nOut of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration.\n\nBy default \"node_modules\" folder is ignored by transformers.\n\nHere's what you can do:\n • If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it.\n • If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript\n • To have some of your \"node_modules\" files transformed, you can specify a custom \"transformIgnorePatterns\" in your config.\n • If you need a custom transformation specify a \"transform\" option in your config.\n • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the \"moduleNameMapper\" config option.\n\nYou'll find more details and examples of these config options in the docs:\nhttps://jestjs.io/docs/configuration\nFor information about custom transformations, see:\nhttps://jestjs.io/docs/code-transformation\n\nDetails:\n\n/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/core/api/client.ts:46\nconst API_BASE_URL = import.meta.env.VITE_API_BASE_URL || '/api';\n                            ^^^^\n\nSyntaxError: Cannot use 'import.meta' outside a module\n    at new Script (node:vm:117:7)\n    at Runtime.createScriptFromCode (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1505:14)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1399:25)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at Runtime.requireModuleOrMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1048:21)\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/stations/api/community-stations.api.ts:5:1)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1439:24)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at Runtime._generateMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1690:34)\n    at Runtime.requireMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:996:39)\n    at Runtime.requireModuleOrMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1046:21)\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/stations/hooks/useCommunityStations.ts:6:1)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1439:24)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at Runtime.requireModuleOrMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1048:21)\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/stations/__tests__/hooks/useCommunityStations.test.ts:8:1)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1439:24)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at jestAdapter (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)\n    at processTicksAndRejections (node:internal/process/task_queues:103:5)\n    at runTestInternal (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:367:16)\n    at runTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:444:34)\n    at Object.worker (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/testWorker.js:106:12)"
            }
          ]
        }
      ]
    },
    {
      "moduleId": "/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/admin/__tests__/useAdmins.test.tsx",
      "tests": [
        {
          "name": "Module failed to load (Error)",
          "fullName": "Module failed to load (Error)",
          "state": "failed",
          "errors": [
            {
              "message": "TextEncoder is not defined",
              "name": "Error",
              "stack": "ReferenceError: TextEncoder is not defined\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/@auth0/auth0-react/node_modules/@auth0/auth0-spa-js/dist/auth0-spa-js.production.esm.js:1:10973)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1439:24)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at Runtime._generateMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1690:34)\n    at Runtime.requireMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:996:39)\n    at Runtime.requireModuleOrMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1046:21)\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/admin/__tests__/useAdmins.test.tsx:7:1)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1439:24)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at jestAdapter (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)\n    at processTicksAndRejections (node:internal/process/task_queues:103:5)\n    at runTestInternal (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:367:16)\n    at runTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:444:34)\n    at Object.worker (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/testWorker.js:106:12)"
            }
          ]
        }
      ]
    },
    {
      "moduleId": "/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/documents/components/DocumentCardMetadata.test.tsx",
      "tests": [
        {
          "name": "displays expiration date",
          "fullName": "DocumentCardMetadata insurance documents displays expiration date",
          "state": "passed"
        },
        {
          "name": "displays policy number",
          "fullName": "DocumentCardMetadata insurance documents displays policy number",
          "state": "passed"
        },
        {
          "name": "displays insurance company",
          "fullName": "DocumentCardMetadata insurance documents displays insurance company",
          "state": "passed"
        },
        {
          "name": "limits to 3 fields in card variant",
          "fullName": "DocumentCardMetadata insurance documents limits to 3 fields in card variant",
          "state": "passed"
        },
        {
          "name": "shows all fields in detail variant",
          "fullName": "DocumentCardMetadata insurance documents shows all fields in detail variant",
          "state": "passed"
        },
        {
          "name": "displays expiration date",
          "fullName": "DocumentCardMetadata registration documents displays expiration date",
          "state": "passed"
        },
        {
          "name": "displays license plate",
          "fullName": "DocumentCardMetadata registration documents displays license plate",
          "state": "passed"
        },
        {
          "name": "shows cost in detail variant only",
          "fullName": "DocumentCardMetadata registration documents shows cost in detail variant only",
          "state": "passed"
        },
        {
          "name": "displays issued date if set",
          "fullName": "DocumentCardMetadata manual documents displays issued date if set",
          "state": "passed"
        },
        {
          "name": "shows notes preview in detail variant only",
          "fullName": "DocumentCardMetadata manual documents shows notes preview in detail variant only",
          "state": "passed"
        },
        {
          "name": "truncates long notes in detail variant",
          "fullName": "DocumentCardMetadata manual documents truncates long notes in detail variant",
          "state": "passed"
        },
        {
          "name": "returns null when no metadata to display",
          "fullName": "DocumentCardMetadata empty states returns null when no metadata to display",
          "state": "passed"
        },
        {
          "name": "handles missing details gracefully",
          "fullName": "DocumentCardMetadata empty states handles missing details gracefully",
          "state": "passed"
        },
        {
          "name": "uses text-xs for mobile variant",
          "fullName": "DocumentCardMetadata variant styling uses text-xs for mobile variant",
          "state": "passed"
        },
        {
          "name": "uses text-sm for card variant",
          "fullName": "DocumentCardMetadata variant styling uses text-sm for card variant",
          "state": "passed"
        },
        {
          "name": "uses grid layout for detail variant",
          "fullName": "DocumentCardMetadata variant styling uses grid layout for detail variant",
          "state": "passed"
        },
        {
          "name": "formats premium correctly",
          "fullName": "DocumentCardMetadata currency formatting formats premium correctly",
          "state": "passed"
        },
        {
          "name": "handles string numbers",
          "fullName": "DocumentCardMetadata currency formatting handles string numbers",
          "state": "passed"
        }
      ]
    },
    {
      "moduleId": "/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/documents/mobile/DocumentsMobileScreen.test.tsx",
      "tests": [
        {
          "name": "Module failed to load (Error)",
          "fullName": "Module failed to load (Error)",
          "state": "failed",
          "errors": [
            {
              "message": "TextEncoder is not defined",
              "name": "Error",
              "stack": "ReferenceError: TextEncoder is not defined\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/@auth0/auth0-react/node_modules/@auth0/auth0-spa-js/dist/auth0-spa-js.production.esm.js:1:10973)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1439:24)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at Runtime.requireModuleOrMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1048:21)\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/documents/mobile/DocumentsMobileScreen.tsx:2:1)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1439:24)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at Runtime.requireModuleOrMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1048:21)\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/documents/mobile/DocumentsMobileScreen.test.tsx:8:1)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1439:24)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at jestAdapter (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)\n    at processTicksAndRejections (node:internal/process/task_queues:103:5)\n    at runTestInternal (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:367:16)\n    at runTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:444:34)\n    at Object.worker (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/testWorker.js:106:12)"
            }
          ]
        }
      ]
    },
    {
      "moduleId": "/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/admin/__tests__/hooks/useBulkSelection.test.ts",
      "tests": [
        {
          "name": "should initialize with empty selection",
          "fullName": "useBulkSelection should initialize with empty selection",
          "state": "passed"
        },
        {
          "name": "should toggle individual item selection",
          "fullName": "useBulkSelection should toggle individual item selection",
          "state": "passed"
        },
        {
          "name": "should toggle all items",
          "fullName": "useBulkSelection should toggle all items",
          "state": "passed"
        },
        {
          "name": "should reset all selections",
          "fullName": "useBulkSelection should reset all selections",
          "state": "passed"
        },
        {
          "name": "should return selected items",
          "fullName": "useBulkSelection should return selected items",
          "state": "passed"
        }
      ]
    },
    {
      "moduleId": "/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/admin/__tests__/catalogShared.test.ts",
      "tests": [
        {
          "name": "describes dependent counts for makes",
          "fullName": "getCascadeSummary describes dependent counts for makes",
          "state": "passed"
        },
        {
          "name": "returns empty string when nothing selected",
          "fullName": "getCascadeSummary returns empty string when nothing selected",
          "state": "passed"
        },
        {
          "name": "prefills parent context for create operations",
          "fullName": "buildDefaultValues prefills parent context for create operations",
          "state": "passed"
        },
        {
          "name": "hydrates existing entity data for editing engines",
          "fullName": "buildDefaultValues hydrates existing entity data for editing engines",
          "state": "passed"
        }
      ]
    },
    {
      "moduleId": "/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/admin/__tests__/useAdminAccess.test.tsx",
      "tests": [
        {
          "name": "Module failed to load (Error)",
          "fullName": "Module failed to load (Error)",
          "state": "failed",
          "errors": [
            {
              "message": "TextEncoder is not defined",
              "name": "Error",
              "stack": "ReferenceError: TextEncoder is not defined\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/@auth0/auth0-react/node_modules/@auth0/auth0-spa-js/dist/auth0-spa-js.production.esm.js:1:10973)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1439:24)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at Runtime._generateMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1690:34)\n    at Runtime.requireMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:996:39)\n    at Runtime.requireModuleOrMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1046:21)\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/admin/__tests__/useAdminAccess.test.tsx:7:1)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1439:24)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at jestAdapter (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)\n    at processTicksAndRejections (node:internal/process/task_queues:103:5)\n    at runTestInternal (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:367:16)\n    at runTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:444:34)\n    at Object.worker (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/testWorker.js:106:12)"
            }
          ]
        }
      ]
    },
    {
      "moduleId": "/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/stations/__tests__/utils/navigation-links.test.ts",
      "tests": [
        {
          "name": "uses coordinates when valid",
          "fullName": "buildNavigationLinks uses coordinates when valid",
          "state": "passed"
        },
        {
          "name": "falls back to query when coordinates are missing",
          "fullName": "buildNavigationLinks falls back to query when coordinates are missing",
          "state": "passed"
        }
      ]
    },
    {
      "moduleId": "/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/admin/__tests__/components/SelectionToolbar.test.tsx",
      "tests": [
        {
          "name": "should not render when selectedCount is 0",
          "fullName": "SelectionToolbar should not render when selectedCount is 0",
          "state": "passed"
        },
        {
          "name": "should render when items are selected",
          "fullName": "SelectionToolbar should render when items are selected",
          "state": "passed"
        },
        {
          "name": "should call onClear when Clear button clicked",
          "fullName": "SelectionToolbar should call onClear when Clear button clicked",
          "state": "passed"
        },
        {
          "name": "should call onSelectAll when Select All button clicked",
          "fullName": "SelectionToolbar should call onSelectAll when Select All button clicked",
          "state": "passed"
        },
        {
          "name": "should render custom action buttons",
          "fullName": "SelectionToolbar should render custom action buttons",
          "state": "passed"
        }
      ]
    },
    {
      "moduleId": "/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/admin/__tests__/components/EmptyState.test.tsx",
      "tests": [
        {
          "name": "should render with title and description",
          "fullName": "EmptyState should render with title and description",
          "state": "passed"
        },
        {
          "name": "should render with icon",
          "fullName": "EmptyState should render with icon",
          "state": "passed"
        },
        {
          "name": "should render action button when provided",
          "fullName": "EmptyState should render action button when provided",
          "state": "passed"
        },
        {
          "name": "should not render action button when not provided",
          "fullName": "EmptyState should not render action button when not provided",
          "state": "passed"
        }
      ]
    },
    {
      "moduleId": "/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/shared-minimal/components/VehicleLimitDialog.test.tsx",
      "tests": [
        {
          "name": "renders when open",
          "fullName": "VehicleLimitDialog Dialog rendering renders when open",
          "state": "passed"
        },
        {
          "name": "does not render when closed",
          "fullName": "VehicleLimitDialog Dialog rendering does not render when closed",
          "state": "passed"
        },
        {
          "name": "displays current count and limit",
          "fullName": "VehicleLimitDialog Props display displays current count and limit",
          "state": "passed"
        },
        {
          "name": "displays free tier upgrade prompt",
          "fullName": "VehicleLimitDialog Props display displays free tier upgrade prompt",
          "state": "passed"
        },
        {
          "name": "displays pro tier upgrade prompt",
          "fullName": "VehicleLimitDialog Props display displays pro tier upgrade prompt",
          "state": "passed"
        },
        {
          "name": "shows tier chips for free user",
          "fullName": "VehicleLimitDialog Props display shows tier chips for free user",
          "state": "passed"
        },
        {
          "name": "shows tier chips for pro user",
          "fullName": "VehicleLimitDialog Props display shows tier chips for pro user",
          "state": "passed"
        },
        {
          "name": "calls onClose when \"Maybe Later\" is clicked",
          "fullName": "VehicleLimitDialog User interactions calls onClose when \"Maybe Later\" is clicked",
          "state": "passed"
        },
        {
          "name": "calls onClose when \"Upgrade (Coming Soon)\" is clicked",
          "fullName": "VehicleLimitDialog User interactions calls onClose when \"Upgrade (Coming Soon)\" is clicked",
          "state": "passed"
        },
        {
          "name": "renders fullscreen on mobile",
          "fullName": "VehicleLimitDialog Mobile responsiveness renders fullscreen on mobile",
          "state": "failed",
          "errors": [
            {
              "message": "Error: expect(received).toBeInTheDocument()\n\nreceived value must be an HTMLElement or an SVGElement.\nReceived has value: null\n    at __EXTERNAL_MATCHER_TRAP__ (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/expect/build/index.js:325:30)\n    at Object.throwingMatcher [as toBeInTheDocument] (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/expect/build/index.js:326:15)\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/shared-minimal/components/VehicleLimitDialog.test.tsx:185:22)\n    at Promise.then.completed (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/utils.js:298:28)\n    at new Promise (<anonymous>)\n    at callAsyncCircusFn (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/utils.js:231:10)\n    at _callCircusTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:316:40)\n    at processTicksAndRejections (node:internal/process/task_queues:103:5)\n    at _runTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:252:3)\n    at _runTestsForDescribeBlock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:126:9)\n    at _runTestsForDescribeBlock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:121:9)\n    at _runTestsForDescribeBlock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:121:9)\n    at run (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:71:3)\n    at runAndTransformResultsToJestFormat (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)\n    at jestAdapter (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)\n    at runTestInternal (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:367:16)\n    at runTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:444:34)\n    at Object.worker (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/testWorker.js:106:12)"
            }
          ]
        },
        {
          "name": "shows close button on mobile",
          "fullName": "VehicleLimitDialog Mobile responsiveness shows close button on mobile",
          "state": "passed"
        },
        {
          "name": "hides close button on desktop",
          "fullName": "VehicleLimitDialog Mobile responsiveness hides close button on desktop",
          "state": "passed"
        }
      ]
    },
    {
      "moduleId": "/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/admin/__tests__/components/AdminSkeleton.test.tsx",
      "tests": [
        {
          "name": "should render default number of rows",
          "fullName": "AdminSkeleton SkeletonRow should render default number of rows",
          "state": "passed"
        },
        {
          "name": "should render specified number of rows",
          "fullName": "AdminSkeleton SkeletonRow should render specified number of rows",
          "state": "failed",
          "errors": [
            {
              "message": "Error: expect(received).toHaveLength(expected)\n\nExpected length: 15\nReceived length: 20\nReceived object: [<span class=\"MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root\" style=\"width: 40px; height: 40px;\" />, <span class=\"MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root\" style=\"width: 60%; height: 24px;\" />, <span class=\"MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root\" style=\"width: 40%; height: 20px;\" />, <span class=\"MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root\" style=\"width: 80px; height: 32px;\" />, <span class=\"MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root\" style=\"width: 40px; height: 40px;\" />, <span class=\"MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root\" style=\"width: 60%; height: 24px;\" />, <span class=\"MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root\" style=\"width: 40%; height: 20px;\" />, <span class=\"MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root\" style=\"width: 80px; height: 32px;\" />, <span class=\"MuiSkeleton-root MuiSkeleton-rectangular MuiSkeleton-pulse css-3sr0vz-MuiSkeleton-root\" style=\"width: 40px; height: 40px;\" />, <span class=\"MuiSkeleton-root MuiSkeleton-text MuiSkeleton-pulse css-kkcbhd-MuiSkeleton-root\" style=\"width: 60%; height: 24px;\" />, …]\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/admin/__tests__/components/AdminSkeleton.test.tsx:20:63)\n    at Promise.then.completed (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/utils.js:298:28)\n    at new Promise (<anonymous>)\n    at callAsyncCircusFn (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/utils.js:231:10)\n    at _callCircusTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:316:40)\n    at processTicksAndRejections (node:internal/process/task_queues:103:5)\n    at _runTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:252:3)\n    at _runTestsForDescribeBlock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:126:9)\n    at _runTestsForDescribeBlock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:121:9)\n    at _runTestsForDescribeBlock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:121:9)\n    at run (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:71:3)\n    at runAndTransformResultsToJestFormat (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)\n    at jestAdapter (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)\n    at runTestInternal (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:367:16)\n    at runTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:444:34)\n    at Object.worker (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/testWorker.js:106:12)"
            }
          ]
        },
        {
          "name": "should render default number of cards",
          "fullName": "AdminSkeleton SkeletonCard should render default number of cards",
          "state": "passed"
        },
        {
          "name": "should render specified number of cards",
          "fullName": "AdminSkeleton SkeletonCard should render specified number of cards",
          "state": "passed"
        }
      ]
    },
    {
      "moduleId": "/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/admin/__tests__/components/AdminSectionHeader.test.tsx",
      "tests": [
        {
          "name": "should render with title and stats",
          "fullName": "AdminSectionHeader should render with title and stats",
          "state": "passed"
        },
        {
          "name": "should render with empty stats",
          "fullName": "AdminSectionHeader should render with empty stats",
          "state": "passed"
        },
        {
          "name": "should format large numbers with locale",
          "fullName": "AdminSectionHeader should format large numbers with locale",
          "state": "passed"
        }
      ]
    },
    {
      "moduleId": "/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/stations/__tests__/components/CommunityStationCard.test.tsx",
      "tests": [
        {
          "name": "should render station details",
          "fullName": "CommunityStationCard should render station details",
          "state": "passed"
        },
        {
          "name": "should display 93 octane status",
          "fullName": "CommunityStationCard should display 93 octane status",
          "state": "passed"
        },
        {
          "name": "should display price when available",
          "fullName": "CommunityStationCard should display price when available",
          "state": "passed"
        },
        {
          "name": "should display status badge",
          "fullName": "CommunityStationCard should display status badge",
          "state": "passed"
        },
        {
          "name": "should show withdraw button for user view",
          "fullName": "CommunityStationCard should show withdraw button for user view",
          "state": "failed",
          "errors": [
            {
              "message": "TestingLibraryElementError: Found multiple elements with the role \"button\"\n\nHere are the matching elements:\n\nIgnored nodes: comments, script, style\n\u001b[36m<button\u001b[39m\n  \u001b[33mclass\u001b[39m=\u001b[32m\"MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeLarge css-bbrslu-MuiButtonBase-root-MuiIconButton-root\"\u001b[39m\n  \u001b[33mtabindex\u001b[39m=\u001b[32m\"0\"\u001b[39m\n  \u001b[33mtitle\u001b[39m=\u001b[32m\"Get directions\"\u001b[39m\n  \u001b[33mtype\u001b[39m=\u001b[32m\"button\"\u001b[39m\n\u001b[36m>\u001b[39m\n  \u001b[36m<svg\u001b[39m\n    \u001b[33maria-hidden\u001b[39m=\u001b[32m\"true\"\u001b[39m\n    \u001b[33mclass\u001b[39m=\u001b[32m\"MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1umw9bq-MuiSvgIcon-root\"\u001b[39m\n    \u001b[33mdata-testid\u001b[39m=\u001b[32m\"DirectionsIcon\"\u001b[39m\n    \u001b[33mfocusable\u001b[39m=\u001b[32m\"false\"\u001b[39m\n    \u001b[33mviewBox\u001b[39m=\u001b[32m\"0 0 24 24\"\u001b[39m\n  \u001b[36m>\u001b[39m\n    \u001b[36m<path\u001b[39m\n      \u001b[33md\u001b[39m=\u001b[32m\"m21.41 10.59-7.99-8c-.78-.78-2.05-.78-2.83 0l-8.01 8c-.78.78-.78 2.05 0 2.83l8.01 8c.78.78 2.05.78 2.83 0l7.99-8c.79-.79.79-2.05 0-2.83M13.5 14.5V12H10v3H8v-4c0-.55.45-1 1-1h4.5V7.5L17 11z\"\u001b[39m\n    \u001b[36m/>\u001b[39m\n  \u001b[36m</svg>\u001b[39m\n\u001b[36m</button>\u001b[39m\n\nIgnored nodes: comments, script, style\n\u001b[36m<button\u001b[39m\n  \u001b[33mclass\u001b[39m=\u001b[32m\"MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeLarge css-b9iu8-MuiButtonBase-root-MuiIconButton-root\"\u001b[39m\n  \u001b[33mtabindex\u001b[39m=\u001b[32m\"0\"\u001b[39m\n  \u001b[33mtitle\u001b[39m=\u001b[32m\"Premium 93 status\"\u001b[39m\n  \u001b[33mtype\u001b[39m=\u001b[32m\"button\"\u001b[39m\n\u001b[36m>\u001b[39m\n  \u001b[36m<svg\u001b[39m\n    \u001b[33maria-hidden\u001b[39m=\u001b[32m\"true\"\u001b[39m\n    \u001b[33mclass\u001b[39m=\u001b[32m\"MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1umw9bq-MuiSvgIcon-root\"\u001b[39m\n    \u001b[33mdata-testid\u001b[39m=\u001b[32m\"LocalGasStationIcon\"\u001b[39m\n    \u001b[33mfocusable\u001b[39m=\u001b[32m\"false\"\u001b[39m\n    \u001b[33mviewBox\u001b[39m=\u001b[32m\"0 0 24 24\"\u001b[39m\n  \u001b[36m>\u001b[39m\n    \u001b[36m<path\u001b[39m\n      \u001b[33md\u001b[39m=\u001b[32m\"m19.77 7.23.01-.01-3.72-3.72L15 4.56l2.11 2.11c-.94.36-1.61 1.26-1.61 2.33 0 1.38 1.12 2.5 2.5 2.5.36 0 .69-.08 1-.21v7.21c0 .55-.45 1-1 1s-1-.45-1-1V14c0-1.1-.9-2-2-2h-1V5c0-1.1-.9-2-2-2H6c-1.1 0-2 .9-2 2v16h10v-7.5h1.5v5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V9c0-.69-.28-1.32-.73-1.77M12 10H6V5h6zm6 0c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1\"\u001b[39m\n    \u001b[36m/>\u001b[39m\n  \u001b[36m</svg>\u001b[39m\n\u001b[36m</button>\u001b[39m\n\nIgnored nodes: comments, script, style\n\u001b[36m<button\u001b[39m\n  \u001b[33mclass\u001b[39m=\u001b[32m\"MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeLarge css-1ka29m2-MuiButtonBase-root-MuiIconButton-root\"\u001b[39m\n  \u001b[33mtabindex\u001b[39m=\u001b[32m\"0\"\u001b[39m\n  \u001b[33mtitle\u001b[39m=\u001b[32m\"Add to favorites\"\u001b[39m\n  \u001b[33mtype\u001b[39m=\u001b[32m\"button\"\u001b[39m\n\u001b[36m>\u001b[39m\n  \u001b[36m<svg\u001b[39m\n    \u001b[33maria-hidden\u001b[39m=\u001b[32m\"true\"\u001b[39m\n    \u001b[33mclass\u001b[39m=\u001b[32m\"MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1umw9bq-MuiSvgIcon-root\"\u001b[39m\n    \u001b[33mdata-testid\u001b[39m=\u001b[32m\"BookmarkBorderIcon\"\u001b[39m\n    \u001b[33mfocusable\u001b[39m=\u001b[32m\"false\"\u001b[39m\n    \u001b[33mviewBox\u001b[39m=\u001b[32m\"0 0 24 24\"\u001b[39m\n  \u001b[36m>\u001b[39m\n    \u001b[36m<path\u001b[39m\n      \u001b[33md\u001b[39m=\u001b[32m\"M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1-.9-2-2-2m0 15-5-2.18L7 18V5h10z\"\u001b[39m\n    \u001b[36m/>\u001b[39m\n  \u001b[36m</svg>\u001b[39m\n\u001b[36m</button>\u001b[39m\n\n(If this is intentional, then use the `*AllBy*` variant of the query (like `queryAllByText`, `getAllByText`, or `findAllByText`)).\n\nIgnored nodes: comments, script, style\n\u001b[36m<body>\u001b[39m\n  \u001b[36m<div>\u001b[39m\n    \u001b[36m<div\u001b[39m\n      \u001b[33mclass\u001b[39m=\u001b[32m\"MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation1 MuiCard-root css-1qjf81r-MuiPaper-root-MuiCard-root\"\u001b[39m\n      \u001b[33mstyle\u001b[39m=\u001b[32m\"--Paper-shadow: 0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12);\"\u001b[39m\n    \u001b[36m>\u001b[39m\n      \u001b[36m<div\u001b[39m\n        \u001b[33mclass\u001b[39m=\u001b[32m\"MuiCardContent-root css-x4lmbv-MuiCardContent-root\"\u001b[39m\n      \u001b[36m>\u001b[39m\n        \u001b[36m<div\u001b[39m\n          \u001b[33mclass\u001b[39m=\u001b[32m\"MuiBox-root css-21y1cj\"\u001b[39m\n        \u001b[36m>\u001b[39m\n          \u001b[36m<div\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiTypography-root MuiTypography-h6 css-chhebq-MuiTypography-root\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[0mShell Downtown\u001b[0m\n          \u001b[36m</div>\u001b[39m\n          \u001b[36m<div\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiChip-root MuiChip-filled MuiChip-sizeSmall MuiChip-colorSuccess MuiChip-filledSuccess css-1fiq0pv-MuiChip-root\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[36m<span\u001b[39m\n              \u001b[33mclass\u001b[39m=\u001b[32m\"MuiChip-label MuiChip-labelSmall css-eccknh-MuiChip-label\"\u001b[39m\n            \u001b[36m>\u001b[39m\n              \u001b[0mapproved\u001b[0m\n            \u001b[36m</span>\u001b[39m\n          \u001b[36m</div>\u001b[39m\n        \u001b[36m</div>\u001b[39m\n        \u001b[36m<p\u001b[39m\n          \u001b[33mclass\u001b[39m=\u001b[32m\"MuiTypography-root MuiTypography-body2 css-1yqh81p-MuiTypography-root\"\u001b[39m\n        \u001b[36m>\u001b[39m\n          \u001b[0m123 Main St\u001b[0m\n        \u001b[36m</p>\u001b[39m\n        \u001b[36m<p\u001b[39m\n          \u001b[33mclass\u001b[39m=\u001b[32m\"MuiTypography-root MuiTypography-body2 css-do3ns5-MuiTypography-root\"\u001b[39m\n        \u001b[36m>\u001b[39m\n          \u001b[0mDenver, CO, 80202\u001b[0m\n        \u001b[36m</p>\u001b[39m\n        \u001b[36m<div\u001b[39m\n          \u001b[33mclass\u001b[39m=\u001b[32m\"MuiChip-root MuiChip-outlined MuiChip-sizeSmall MuiChip-colorDefault MuiChip-outlinedDefault css-1wkvewh-MuiChip-root\"\u001b[39m\n        \u001b[36m>\u001b[39m\n          \u001b[36m<span\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiChip-label MuiChip-labelSmall css-19m61dl-MuiChip-label\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[0mBrand: Shell\u001b[0m\n          \u001b[36m</span>\u001b[39m\n        \u001b[36m</div>\u001b[39m\n        \u001b[36m<div\u001b[39m\n          \u001b[33mclass\u001b[39m=\u001b[32m\"MuiChip-root MuiChip-filled MuiChip-sizeSmall MuiChip-colorSuccess MuiChip-filledSuccess css-1t3caiy-MuiChip-root\"\u001b[39m\n        \u001b[36m>\u001b[39m\n          \u001b[36m<span\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiChip-label MuiChip-labelSmall css-eccknh-MuiChip-label\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[0m93 Octane · w/ Ethanol\u001b[0m\n          \u001b[36m</span>\u001b[39m\n        \u001b[36m</div>\u001b[39m\n        \u001b[36m<div\u001b[39m\n          \u001b[33mclass\u001b[39m=\u001b[32m\"MuiChip-root MuiChip-outlined MuiChip-sizeSmall MuiChip-colorDefault MuiChip-outlinedDefault css-1wkvewh-MuiChip-root\"\u001b[39m\n        \u001b[36m>\u001b[39m\n          \u001b[36m<span\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiChip-label MuiChip-labelSmall css-19m61dl-MuiChip-label\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[0m$3.599/gal\u001b[0m\n          \u001b[36m</span>\u001b[39m\n        \u001b[36m</div>\u001b[39m\n        \u001b[36m<div\u001b[39m\n          \u001b[33mclass\u001b[39m=\u001b[32m\"MuiBox-root css-brgqcg\"\u001b[39m\n        \u001b[36m>\u001b[39m\n          \u001b[36m<span\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiTypography-root MuiTypography-caption css-829dqb-MuiTypography-root\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[0mNotes:\u001b[0m\n          \u001b[36m</span>\u001b[39m\n          \u001b[36m<p\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiTypography-root MuiTypography-body2 css-7ctihp-MuiTypography-root\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[0mGood quality fuel\u001b[0m\n          \u001b[36m</p>\u001b[39m\n        \u001b[36m</div>\u001b[39m\n        \u001b[36m<div\u001b[39m\n          \u001b[33mclass\u001b[39m=\u001b[32m\"MuiBox-root css-14kkhip\"\u001b[39m\n        \u001b[36m>\u001b[39m\n          \u001b[36m<span\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiTypography-root MuiTypography-caption css-1jkzbat-MuiTypography-root\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[0mSubmitted by: \u001b[0m\n            \u001b[0muser@example.com\u001b[0m\n          \u001b[36m</span>\u001b[39m\n        \u001b[36m</div>\u001b[39m\n      \u001b[36m</div>\u001b[39m\n      \u001b[36m<div\u001b[39m\n        \u001b[33mclass\u001b[39m=\u001b[32m\"MuiBox-root css-dre66w\"\u001b[39m\n      \u001b[36m>\u001b[39m\n        \u001b[36m<div\u001b[39m\n          \u001b[33mclass\u001b[39m=\u001b[32m\"MuiBox-root css-dvxtzn\"\u001b[39m\n        \u001b[36m>\u001b[39m\n          \u001b[36m<button\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeLarge css-bbrslu-MuiButtonBase-root-MuiIconButton-root\"\u001b[39m\n            \u001b[33mtabindex\u001b[39m=\u001b[32m\"0\"\u001b[39m\n            \u001b[33mtitle\u001b[39m=\u001b[32m\"Get directions\"\u001b[39m\n            \u001b[33mtype\u001b[39m=\u001b[32m\"button\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[36m<svg\u001b[39m\n              \u001b[33maria-hidden\u001b[39m=\u001b[32m\"true\"\u001b[39m\n              \u001b[33mclass\u001b[39m=\u001b[32m\"MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1umw9bq-MuiSvgIcon-root\"\u001b[39m\n              \u001b[33mdata-testid\u001b[39m=\u001b[32m\"DirectionsIcon\"\u001b[39m\n              \u001b[33mfocusable\u001b[39m=\u001b[32m\"false\"\u001b[39m\n              \u001b[33mviewBox\u001b[39m=\u001b[32m\"0 0 24 24\"\u001b[39m\n            \u001b[36m>\u001b[39m\n              \u001b[36m<path\u001b[39m\n                \u001b[33md\u001b[39m=\u001b[32m\"m21.41 10.59-7.99-8c-.78-.78-2.05-.78-2.83 0l-8.01 8c-.78.78-.78 2.05 0 2.83l8.01 8c.78.78 2.05.78 2.83 0l7.99-8c.79-.79.79-2.05 0-2.83M13.5 14.5V12H10v3H8v-4c0-.55.45-1 1-1h4.5V7.5L17 11z\"\u001b[39m\n              \u001b[36m/>\u001b[39m\n            \u001b[36m</svg>\u001b[39m\n          \u001b[36m</button>\u001b[39m\n          \u001b[36m<span\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiTypography-root MuiTypography-caption css-kxuwnm-MuiTypography-root\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[0mNavigate\u001b[0m\n          \u001b[36m</span>\u001b[39m\n        \u001b[36m</div>\u001b[39m\n        \u001b[36m<div\u001b[39m\n          \u001b[33mclass\u001b[39m=\u001b[32m\"MuiBox-root css-dvxtzn\"\u001b[39m\n        \u001b[36m>\u001b[39m\n          \u001b[36m<button\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeLarge css-b9iu8-MuiButtonBase-root-MuiIconButton-root\"\u001b[39m\n            \u001b[33mtabindex\u001b[39m=\u001b[32m\"0\"\u001b[39m\n            \u001b[33mtitle\u001b[39m=\u001b[32m\"Premium 93 status\"\u001b[39m\n            \u001b[33mtype\u001b[39m=\u001b[32m\"button\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[36m<svg\u001b[39m\n              \u001b[33maria-hidden\u001b[39m=\u001b[32m\"true\"\u001b[39m\n              \u001b[33mclass\u001b[39m=\u001b[32m\"MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1umw9bq-MuiSvgIcon-root\"\u001b[39m\n              \u001b[33mdata-testid\u001b[39m=\u001b[32m\"LocalGasStationIcon\"\u001b[39m\n              \u001b[33mfocusable\u001b[39m=\u001b[32m\"false\"\u001b[39m\n              \u001b[33mviewBox\u001b[39m=\u001b[32m\"0 0 24 24\"\u001b[39m\n            \u001b[36m>\u001b[39m\n              \u001b[36m<path\u001b[39m\n                \u001b[33md\u001b[39m=\u001b[32m\"m19.77 7.23.01-.01-3.72-3.72L15 4.56l2.11 2.11c-.94.36-1.61 1.26-1.61 2.33 0 1.38 1.12 2.5 2.5 2.5.36 0 .69-.08 1-.21v7.21c0 .55-.45 1-1 1s-1-.45-1-1V14c0-1.1-.9-2-2-2h-1V5c0-1.1-.9-2-2-2H6c-1.1 0-2 .9-2 2v16h10v-7.5h1.5v5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V9c0-.69-.28-1.32-.73-1.77M12 10H6V5h6zm6 0c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1\"\u001b[39m\n              \u001b[36m/>\u001b[39m\n            \u001b[36m</svg>\u001b[39m\n          \u001b[36m</button>\u001b[39m\n          \u001b[36m<span\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiTypography-root MuiTypography-caption css-182y4m6-MuiTypography-root\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[0mPremium 93\u001b[0m\n          \u001b[36m</span>\u001b[39m\n        \u001b[36m</div>\u001b[39m\n        \u001b[36m<div\u001b[39m\n          \u001b[33mclass\u001b[39m=\u001b[32m\"MuiBox-root css-dvxtzn\"\u001b[39m\n        \u001b[36m>\u001b[39m\n          \u001b[36m<button\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeLarge css-1ka29m2-MuiButtonBase-root-MuiIconButton-root\"\u001b[39m\n            \u001b[33mtabindex\u001b[39m=\u001b[32m\"0\"\u001b[39m\n            \u001b[33mtitle\u001b[39m=\u001b[32m\"Add to favorites\"\u001b[39m\n            \u001b[33mtype\u001b[39m=\u001b[32m\"button\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[36m<svg\u001b[39m\n              \u001b[33maria-hidden\u001b[39m=\u001b[32m\"true\"\u001b[39m\n              \u001b[33mclass\u001b[39m=\u001b[32m\"MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1umw9bq-MuiSvgIcon-root\"\u001b[39m\n              \u001b[33mdata-testid\u001b[39m=\u001b[32m\"BookmarkBorderIcon\"\u001b[39m\n              \u001b[33mfocusable\u001b[39m=\u001b[32m\"false\"\u001b[39m\n              \u001b[33mviewBox\u001b[39m=\u001b[32m\"0 0 24 24\"\u001b[39m\n            \u001b[36m>\u001b[39m\n              \u001b[36m<path\u001b[39m\n                \u001b[33md\u001b[39m=\u001b[32m\"M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1-.9-2-2-2m0 15-5-2.18L7 18V5h10z\"\u001b[39m\n              \u001b[36m/>\u001b[39m\n            \u001b[36m</svg>\u001b[39m\n          \u001b[36m</button>\u001b[39m\n          \u001b[36m<span\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiTypography-root MuiTypography-caption css-kxuwnm-MuiTypography-root\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[0mFavorite\u001b[0m\n          \u001b[36m</span>\u001b[39m\n        \u001b[36m</div>\u001b[39m\n      \u001b[36m</div>\u001b[39m\n    \u001b[36m</div>\u001b[39m\n  \u001b[36m</div>\u001b[39m\n\u001b[36m</body>\u001b[39m\n    at Object.getElementError (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/@testing-library/dom/dist/config.js:37:19)\n    at getElementError (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/@testing-library/dom/dist/query-helpers.js:20:35)\n    at getMultipleElementsFoundError (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/@testing-library/dom/dist/query-helpers.js:23:10)\n    at /Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/@testing-library/dom/dist/query-helpers.js:55:13\n    at /Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/@testing-library/dom/dist/query-helpers.js:95:19\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/stations/__tests__/components/CommunityStationCard.test.tsx:66:19)\n    at Promise.then.completed (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/utils.js:298:28)\n    at new Promise (<anonymous>)\n    at callAsyncCircusFn (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/utils.js:231:10)\n    at _callCircusTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:316:40)\n    at processTicksAndRejections (node:internal/process/task_queues:103:5)\n    at _runTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:252:3)\n    at _runTestsForDescribeBlock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:126:9)\n    at _runTestsForDescribeBlock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:121:9)\n    at run (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:71:3)\n    at runAndTransformResultsToJestFormat (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)\n    at jestAdapter (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)\n    at runTestInternal (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:367:16)\n    at runTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:444:34)\n    at Object.worker (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/testWorker.js:106:12)",
              "name": "TestingLibraryElementError"
            }
          ]
        },
        {
          "name": "should show approve and reject buttons for admin",
          "fullName": "CommunityStationCard should show approve and reject buttons for admin",
          "state": "passed"
        },
        {
          "name": "should call onWithdraw when withdraw button is clicked",
          "fullName": "CommunityStationCard should call onWithdraw when withdraw button is clicked",
          "state": "failed",
          "errors": [
            {
              "message": "TestingLibraryElementError: Found multiple elements with the role \"button\"\n\nHere are the matching elements:\n\nIgnored nodes: comments, script, style\n\u001b[36m<button\u001b[39m\n  \u001b[33mclass\u001b[39m=\u001b[32m\"MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeLarge css-bbrslu-MuiButtonBase-root-MuiIconButton-root\"\u001b[39m\n  \u001b[33mtabindex\u001b[39m=\u001b[32m\"0\"\u001b[39m\n  \u001b[33mtitle\u001b[39m=\u001b[32m\"Get directions\"\u001b[39m\n  \u001b[33mtype\u001b[39m=\u001b[32m\"button\"\u001b[39m\n\u001b[36m>\u001b[39m\n  \u001b[36m<svg\u001b[39m\n    \u001b[33maria-hidden\u001b[39m=\u001b[32m\"true\"\u001b[39m\n    \u001b[33mclass\u001b[39m=\u001b[32m\"MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1umw9bq-MuiSvgIcon-root\"\u001b[39m\n    \u001b[33mdata-testid\u001b[39m=\u001b[32m\"DirectionsIcon\"\u001b[39m\n    \u001b[33mfocusable\u001b[39m=\u001b[32m\"false\"\u001b[39m\n    \u001b[33mviewBox\u001b[39m=\u001b[32m\"0 0 24 24\"\u001b[39m\n  \u001b[36m>\u001b[39m\n    \u001b[36m<path\u001b[39m\n      \u001b[33md\u001b[39m=\u001b[32m\"m21.41 10.59-7.99-8c-.78-.78-2.05-.78-2.83 0l-8.01 8c-.78.78-.78 2.05 0 2.83l8.01 8c.78.78 2.05.78 2.83 0l7.99-8c.79-.79.79-2.05 0-2.83M13.5 14.5V12H10v3H8v-4c0-.55.45-1 1-1h4.5V7.5L17 11z\"\u001b[39m\n    \u001b[36m/>\u001b[39m\n  \u001b[36m</svg>\u001b[39m\n\u001b[36m</button>\u001b[39m\n\nIgnored nodes: comments, script, style\n\u001b[36m<button\u001b[39m\n  \u001b[33mclass\u001b[39m=\u001b[32m\"MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeLarge css-b9iu8-MuiButtonBase-root-MuiIconButton-root\"\u001b[39m\n  \u001b[33mtabindex\u001b[39m=\u001b[32m\"0\"\u001b[39m\n  \u001b[33mtitle\u001b[39m=\u001b[32m\"Premium 93 status\"\u001b[39m\n  \u001b[33mtype\u001b[39m=\u001b[32m\"button\"\u001b[39m\n\u001b[36m>\u001b[39m\n  \u001b[36m<svg\u001b[39m\n    \u001b[33maria-hidden\u001b[39m=\u001b[32m\"true\"\u001b[39m\n    \u001b[33mclass\u001b[39m=\u001b[32m\"MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1umw9bq-MuiSvgIcon-root\"\u001b[39m\n    \u001b[33mdata-testid\u001b[39m=\u001b[32m\"LocalGasStationIcon\"\u001b[39m\n    \u001b[33mfocusable\u001b[39m=\u001b[32m\"false\"\u001b[39m\n    \u001b[33mviewBox\u001b[39m=\u001b[32m\"0 0 24 24\"\u001b[39m\n  \u001b[36m>\u001b[39m\n    \u001b[36m<path\u001b[39m\n      \u001b[33md\u001b[39m=\u001b[32m\"m19.77 7.23.01-.01-3.72-3.72L15 4.56l2.11 2.11c-.94.36-1.61 1.26-1.61 2.33 0 1.38 1.12 2.5 2.5 2.5.36 0 .69-.08 1-.21v7.21c0 .55-.45 1-1 1s-1-.45-1-1V14c0-1.1-.9-2-2-2h-1V5c0-1.1-.9-2-2-2H6c-1.1 0-2 .9-2 2v16h10v-7.5h1.5v5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V9c0-.69-.28-1.32-.73-1.77M12 10H6V5h6zm6 0c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1\"\u001b[39m\n    \u001b[36m/>\u001b[39m\n  \u001b[36m</svg>\u001b[39m\n\u001b[36m</button>\u001b[39m\n\nIgnored nodes: comments, script, style\n\u001b[36m<button\u001b[39m\n  \u001b[33mclass\u001b[39m=\u001b[32m\"MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeLarge css-1ka29m2-MuiButtonBase-root-MuiIconButton-root\"\u001b[39m\n  \u001b[33mtabindex\u001b[39m=\u001b[32m\"0\"\u001b[39m\n  \u001b[33mtitle\u001b[39m=\u001b[32m\"Add to favorites\"\u001b[39m\n  \u001b[33mtype\u001b[39m=\u001b[32m\"button\"\u001b[39m\n\u001b[36m>\u001b[39m\n  \u001b[36m<svg\u001b[39m\n    \u001b[33maria-hidden\u001b[39m=\u001b[32m\"true\"\u001b[39m\n    \u001b[33mclass\u001b[39m=\u001b[32m\"MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1umw9bq-MuiSvgIcon-root\"\u001b[39m\n    \u001b[33mdata-testid\u001b[39m=\u001b[32m\"BookmarkBorderIcon\"\u001b[39m\n    \u001b[33mfocusable\u001b[39m=\u001b[32m\"false\"\u001b[39m\n    \u001b[33mviewBox\u001b[39m=\u001b[32m\"0 0 24 24\"\u001b[39m\n  \u001b[36m>\u001b[39m\n    \u001b[36m<path\u001b[39m\n      \u001b[33md\u001b[39m=\u001b[32m\"M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1-.9-2-2-2m0 15-5-2.18L7 18V5h10z\"\u001b[39m\n    \u001b[36m/>\u001b[39m\n  \u001b[36m</svg>\u001b[39m\n\u001b[36m</button>\u001b[39m\n\n(If this is intentional, then use the `*AllBy*` variant of the query (like `queryAllByText`, `getAllByText`, or `findAllByText`)).\n\nIgnored nodes: comments, script, style\n\u001b[36m<body>\u001b[39m\n  \u001b[36m<div>\u001b[39m\n    \u001b[36m<div\u001b[39m\n      \u001b[33mclass\u001b[39m=\u001b[32m\"MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation1 MuiCard-root css-1qjf81r-MuiPaper-root-MuiCard-root\"\u001b[39m\n      \u001b[33mstyle\u001b[39m=\u001b[32m\"--Paper-shadow: 0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12);\"\u001b[39m\n    \u001b[36m>\u001b[39m\n      \u001b[36m<div\u001b[39m\n        \u001b[33mclass\u001b[39m=\u001b[32m\"MuiCardContent-root css-x4lmbv-MuiCardContent-root\"\u001b[39m\n      \u001b[36m>\u001b[39m\n        \u001b[36m<div\u001b[39m\n          \u001b[33mclass\u001b[39m=\u001b[32m\"MuiBox-root css-21y1cj\"\u001b[39m\n        \u001b[36m>\u001b[39m\n          \u001b[36m<div\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiTypography-root MuiTypography-h6 css-chhebq-MuiTypography-root\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[0mShell Downtown\u001b[0m\n          \u001b[36m</div>\u001b[39m\n          \u001b[36m<div\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiChip-root MuiChip-filled MuiChip-sizeSmall MuiChip-colorSuccess MuiChip-filledSuccess css-1fiq0pv-MuiChip-root\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[36m<span\u001b[39m\n              \u001b[33mclass\u001b[39m=\u001b[32m\"MuiChip-label MuiChip-labelSmall css-eccknh-MuiChip-label\"\u001b[39m\n            \u001b[36m>\u001b[39m\n              \u001b[0mapproved\u001b[0m\n            \u001b[36m</span>\u001b[39m\n          \u001b[36m</div>\u001b[39m\n        \u001b[36m</div>\u001b[39m\n        \u001b[36m<p\u001b[39m\n          \u001b[33mclass\u001b[39m=\u001b[32m\"MuiTypography-root MuiTypography-body2 css-1yqh81p-MuiTypography-root\"\u001b[39m\n        \u001b[36m>\u001b[39m\n          \u001b[0m123 Main St\u001b[0m\n        \u001b[36m</p>\u001b[39m\n        \u001b[36m<p\u001b[39m\n          \u001b[33mclass\u001b[39m=\u001b[32m\"MuiTypography-root MuiTypography-body2 css-do3ns5-MuiTypography-root\"\u001b[39m\n        \u001b[36m>\u001b[39m\n          \u001b[0mDenver, CO, 80202\u001b[0m\n        \u001b[36m</p>\u001b[39m\n        \u001b[36m<div\u001b[39m\n          \u001b[33mclass\u001b[39m=\u001b[32m\"MuiChip-root MuiChip-outlined MuiChip-sizeSmall MuiChip-colorDefault MuiChip-outlinedDefault css-1wkvewh-MuiChip-root\"\u001b[39m\n        \u001b[36m>\u001b[39m\n          \u001b[36m<span\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiChip-label MuiChip-labelSmall css-19m61dl-MuiChip-label\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[0mBrand: Shell\u001b[0m\n          \u001b[36m</span>\u001b[39m\n        \u001b[36m</div>\u001b[39m\n        \u001b[36m<div\u001b[39m\n          \u001b[33mclass\u001b[39m=\u001b[32m\"MuiChip-root MuiChip-filled MuiChip-sizeSmall MuiChip-colorSuccess MuiChip-filledSuccess css-1t3caiy-MuiChip-root\"\u001b[39m\n        \u001b[36m>\u001b[39m\n          \u001b[36m<span\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiChip-label MuiChip-labelSmall css-eccknh-MuiChip-label\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[0m93 Octane · w/ Ethanol\u001b[0m\n          \u001b[36m</span>\u001b[39m\n        \u001b[36m</div>\u001b[39m\n        \u001b[36m<div\u001b[39m\n          \u001b[33mclass\u001b[39m=\u001b[32m\"MuiChip-root MuiChip-outlined MuiChip-sizeSmall MuiChip-colorDefault MuiChip-outlinedDefault css-1wkvewh-MuiChip-root\"\u001b[39m\n        \u001b[36m>\u001b[39m\n          \u001b[36m<span\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiChip-label MuiChip-labelSmall css-19m61dl-MuiChip-label\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[0m$3.599/gal\u001b[0m\n          \u001b[36m</span>\u001b[39m\n        \u001b[36m</div>\u001b[39m\n        \u001b[36m<div\u001b[39m\n          \u001b[33mclass\u001b[39m=\u001b[32m\"MuiBox-root css-brgqcg\"\u001b[39m\n        \u001b[36m>\u001b[39m\n          \u001b[36m<span\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiTypography-root MuiTypography-caption css-829dqb-MuiTypography-root\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[0mNotes:\u001b[0m\n          \u001b[36m</span>\u001b[39m\n          \u001b[36m<p\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiTypography-root MuiTypography-body2 css-7ctihp-MuiTypography-root\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[0mGood quality fuel\u001b[0m\n          \u001b[36m</p>\u001b[39m\n        \u001b[36m</div>\u001b[39m\n        \u001b[36m<div\u001b[39m\n          \u001b[33mclass\u001b[39m=\u001b[32m\"MuiBox-root css-14kkhip\"\u001b[39m\n        \u001b[36m>\u001b[39m\n          \u001b[36m<span\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiTypography-root MuiTypography-caption css-1jkzbat-MuiTypography-root\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[0mSubmitted by: \u001b[0m\n            \u001b[0muser@example.com\u001b[0m\n          \u001b[36m</span>\u001b[39m\n        \u001b[36m</div>\u001b[39m\n      \u001b[36m</div>\u001b[39m\n      \u001b[36m<div\u001b[39m\n        \u001b[33mclass\u001b[39m=\u001b[32m\"MuiBox-root css-dre66w\"\u001b[39m\n      \u001b[36m>\u001b[39m\n        \u001b[36m<div\u001b[39m\n          \u001b[33mclass\u001b[39m=\u001b[32m\"MuiBox-root css-dvxtzn\"\u001b[39m\n        \u001b[36m>\u001b[39m\n          \u001b[36m<button\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeLarge css-bbrslu-MuiButtonBase-root-MuiIconButton-root\"\u001b[39m\n            \u001b[33mtabindex\u001b[39m=\u001b[32m\"0\"\u001b[39m\n            \u001b[33mtitle\u001b[39m=\u001b[32m\"Get directions\"\u001b[39m\n            \u001b[33mtype\u001b[39m=\u001b[32m\"button\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[36m<svg\u001b[39m\n              \u001b[33maria-hidden\u001b[39m=\u001b[32m\"true\"\u001b[39m\n              \u001b[33mclass\u001b[39m=\u001b[32m\"MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1umw9bq-MuiSvgIcon-root\"\u001b[39m\n              \u001b[33mdata-testid\u001b[39m=\u001b[32m\"DirectionsIcon\"\u001b[39m\n              \u001b[33mfocusable\u001b[39m=\u001b[32m\"false\"\u001b[39m\n              \u001b[33mviewBox\u001b[39m=\u001b[32m\"0 0 24 24\"\u001b[39m\n            \u001b[36m>\u001b[39m\n              \u001b[36m<path\u001b[39m\n                \u001b[33md\u001b[39m=\u001b[32m\"m21.41 10.59-7.99-8c-.78-.78-2.05-.78-2.83 0l-8.01 8c-.78.78-.78 2.05 0 2.83l8.01 8c.78.78 2.05.78 2.83 0l7.99-8c.79-.79.79-2.05 0-2.83M13.5 14.5V12H10v3H8v-4c0-.55.45-1 1-1h4.5V7.5L17 11z\"\u001b[39m\n              \u001b[36m/>\u001b[39m\n            \u001b[36m</svg>\u001b[39m\n          \u001b[36m</button>\u001b[39m\n          \u001b[36m<span\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiTypography-root MuiTypography-caption css-kxuwnm-MuiTypography-root\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[0mNavigate\u001b[0m\n          \u001b[36m</span>\u001b[39m\n        \u001b[36m</div>\u001b[39m\n        \u001b[36m<div\u001b[39m\n          \u001b[33mclass\u001b[39m=\u001b[32m\"MuiBox-root css-dvxtzn\"\u001b[39m\n        \u001b[36m>\u001b[39m\n          \u001b[36m<button\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeLarge css-b9iu8-MuiButtonBase-root-MuiIconButton-root\"\u001b[39m\n            \u001b[33mtabindex\u001b[39m=\u001b[32m\"0\"\u001b[39m\n            \u001b[33mtitle\u001b[39m=\u001b[32m\"Premium 93 status\"\u001b[39m\n            \u001b[33mtype\u001b[39m=\u001b[32m\"button\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[36m<svg\u001b[39m\n              \u001b[33maria-hidden\u001b[39m=\u001b[32m\"true\"\u001b[39m\n              \u001b[33mclass\u001b[39m=\u001b[32m\"MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1umw9bq-MuiSvgIcon-root\"\u001b[39m\n              \u001b[33mdata-testid\u001b[39m=\u001b[32m\"LocalGasStationIcon\"\u001b[39m\n              \u001b[33mfocusable\u001b[39m=\u001b[32m\"false\"\u001b[39m\n              \u001b[33mviewBox\u001b[39m=\u001b[32m\"0 0 24 24\"\u001b[39m\n            \u001b[36m>\u001b[39m\n              \u001b[36m<path\u001b[39m\n                \u001b[33md\u001b[39m=\u001b[32m\"m19.77 7.23.01-.01-3.72-3.72L15 4.56l2.11 2.11c-.94.36-1.61 1.26-1.61 2.33 0 1.38 1.12 2.5 2.5 2.5.36 0 .69-.08 1-.21v7.21c0 .55-.45 1-1 1s-1-.45-1-1V14c0-1.1-.9-2-2-2h-1V5c0-1.1-.9-2-2-2H6c-1.1 0-2 .9-2 2v16h10v-7.5h1.5v5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V9c0-.69-.28-1.32-.73-1.77M12 10H6V5h6zm6 0c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1\"\u001b[39m\n              \u001b[36m/>\u001b[39m\n            \u001b[36m</svg>\u001b[39m\n          \u001b[36m</button>\u001b[39m\n          \u001b[36m<span\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiTypography-root MuiTypography-caption css-182y4m6-MuiTypography-root\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[0mPremium 93\u001b[0m\n          \u001b[36m</span>\u001b[39m\n        \u001b[36m</div>\u001b[39m\n        \u001b[36m<div\u001b[39m\n          \u001b[33mclass\u001b[39m=\u001b[32m\"MuiBox-root css-dvxtzn\"\u001b[39m\n        \u001b[36m>\u001b[39m\n          \u001b[36m<button\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiButtonBase-root MuiIconButton-root MuiIconButton-sizeLarge css-1ka29m2-MuiButtonBase-root-MuiIconButton-root\"\u001b[39m\n            \u001b[33mtabindex\u001b[39m=\u001b[32m\"0\"\u001b[39m\n            \u001b[33mtitle\u001b[39m=\u001b[32m\"Add to favorites\"\u001b[39m\n            \u001b[33mtype\u001b[39m=\u001b[32m\"button\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[36m<svg\u001b[39m\n              \u001b[33maria-hidden\u001b[39m=\u001b[32m\"true\"\u001b[39m\n              \u001b[33mclass\u001b[39m=\u001b[32m\"MuiSvgIcon-root MuiSvgIcon-fontSizeMedium css-1umw9bq-MuiSvgIcon-root\"\u001b[39m\n              \u001b[33mdata-testid\u001b[39m=\u001b[32m\"BookmarkBorderIcon\"\u001b[39m\n              \u001b[33mfocusable\u001b[39m=\u001b[32m\"false\"\u001b[39m\n              \u001b[33mviewBox\u001b[39m=\u001b[32m\"0 0 24 24\"\u001b[39m\n            \u001b[36m>\u001b[39m\n              \u001b[36m<path\u001b[39m\n                \u001b[33md\u001b[39m=\u001b[32m\"M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1-.9-2-2-2m0 15-5-2.18L7 18V5h10z\"\u001b[39m\n              \u001b[36m/>\u001b[39m\n            \u001b[36m</svg>\u001b[39m\n          \u001b[36m</button>\u001b[39m\n          \u001b[36m<span\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiTypography-root MuiTypography-caption css-kxuwnm-MuiTypography-root\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[0mFavorite\u001b[0m\n          \u001b[36m</span>\u001b[39m\n        \u001b[36m</div>\u001b[39m\n      \u001b[36m</div>\u001b[39m\n    \u001b[36m</div>\u001b[39m\n  \u001b[36m</div>\u001b[39m\n\u001b[36m</body>\u001b[39m\n    at Object.getElementError (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/@testing-library/dom/dist/config.js:37:19)\n    at getElementError (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/@testing-library/dom/dist/query-helpers.js:20:35)\n    at getMultipleElementsFoundError (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/@testing-library/dom/dist/query-helpers.js:23:10)\n    at /Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/@testing-library/dom/dist/query-helpers.js:55:13\n    at /Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/@testing-library/dom/dist/query-helpers.js:95:19\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/stations/__tests__/components/CommunityStationCard.test.tsx:94:35)\n    at Promise.then.completed (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/utils.js:298:28)\n    at new Promise (<anonymous>)\n    at callAsyncCircusFn (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/utils.js:231:10)\n    at _callCircusTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:316:40)\n    at processTicksAndRejections (node:internal/process/task_queues:103:5)\n    at _runTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:252:3)\n    at _runTestsForDescribeBlock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:126:9)\n    at _runTestsForDescribeBlock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:121:9)\n    at run (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:71:3)\n    at runAndTransformResultsToJestFormat (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)\n    at jestAdapter (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)\n    at runTestInternal (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:367:16)\n    at runTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:444:34)\n    at Object.worker (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/testWorker.js:106:12)",
              "name": "TestingLibraryElementError"
            }
          ]
        },
        {
          "name": "should handle rejection with reason",
          "fullName": "CommunityStationCard should handle rejection with reason",
          "state": "passed"
        },
        {
          "name": "should work on mobile viewport",
          "fullName": "CommunityStationCard should work on mobile viewport",
          "state": "passed"
        }
      ]
    },
    {
      "moduleId": "/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/admin/__tests__/components/BulkActionDialog.test.tsx",
      "tests": [
        {
          "name": "should render dialog when open",
          "fullName": "BulkActionDialog should render dialog when open",
          "state": "passed"
        },
        {
          "name": "should display list of items",
          "fullName": "BulkActionDialog should display list of items",
          "state": "passed"
        },
        {
          "name": "should call onConfirm when confirm button clicked",
          "fullName": "BulkActionDialog should call onConfirm when confirm button clicked",
          "state": "passed"
        },
        {
          "name": "should call onCancel when cancel button clicked",
          "fullName": "BulkActionDialog should call onCancel when cancel button clicked",
          "state": "passed"
        },
        {
          "name": "should disable buttons when loading",
          "fullName": "BulkActionDialog should disable buttons when loading",
          "state": "failed",
          "errors": [
            {
              "message": "TestingLibraryElementError: Unable to find an accessible element with the role \"button\" and name `/confirm/i`\n\nHere are the accessible roles:\n\n  presentation:\n\n  Name \"\":\n  \u001b[36m<div\u001b[39m\n    \u001b[33mclass\u001b[39m=\u001b[32m\"MuiDialog-root MuiModal-root css-1424xw8-MuiModal-root-MuiDialog-root\"\u001b[39m\n    \u001b[33mrole\u001b[39m=\u001b[32m\"presentation\"\u001b[39m\n  \u001b[36m/>\u001b[39m\n\n  Name \"\":\n  \u001b[36m<div\u001b[39m\n    \u001b[33mclass\u001b[39m=\u001b[32m\"MuiDialog-container MuiDialog-scrollPaper css-19do60a-MuiDialog-container\"\u001b[39m\n    \u001b[33mrole\u001b[39m=\u001b[32m\"presentation\"\u001b[39m\n    \u001b[33mstyle\u001b[39m=\u001b[32m\"opacity: 1; webkit-transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\"\u001b[39m\n    \u001b[33mtabindex\u001b[39m=\u001b[32m\"-1\"\u001b[39m\n  \u001b[36m/>\u001b[39m\n\n  --------------------------------------------------\n  dialog:\n\n  Name \"Delete Items?\":\n  \u001b[36m<div\u001b[39m\n    \u001b[33maria-labelledby\u001b[39m=\u001b[32m\"bulk-action-dialog-title\"\u001b[39m\n    \u001b[33maria-modal\u001b[39m=\u001b[32m\"true\"\u001b[39m\n    \u001b[33mclass\u001b[39m=\u001b[32m\"MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation24 MuiDialog-paper MuiDialog-paperScrollPaper MuiDialog-paperWidthSm MuiDialog-paperFullWidth css-16htz67-MuiPaper-root-MuiDialog-paper\"\u001b[39m\n    \u001b[33mrole\u001b[39m=\u001b[32m\"dialog\"\u001b[39m\n    \u001b[33mstyle\u001b[39m=\u001b[32m\"--Paper-shadow: 0px 11px 15px -7px rgba(0,0,0,0.2),0px 24px 38px 3px rgba(0,0,0,0.14),0px 9px 46px 8px rgba(0,0,0,0.12);\"\u001b[39m\n  \u001b[36m/>\u001b[39m\n\n  --------------------------------------------------\n  heading:\n\n  Name \"Delete Items?\":\n  \u001b[36m<h2\u001b[39m\n    \u001b[33mclass\u001b[39m=\u001b[32m\"MuiTypography-root MuiTypography-h6 MuiDialogTitle-root css-rvoa5x-MuiTypography-root-MuiDialogTitle-root\"\u001b[39m\n    \u001b[33mid\u001b[39m=\u001b[32m\"bulk-action-dialog-title\"\u001b[39m\n  \u001b[36m/>\u001b[39m\n\n  --------------------------------------------------\n  paragraph:\n\n  Name \"\":\n  \u001b[36m<p\u001b[39m\n    \u001b[33mclass\u001b[39m=\u001b[32m\"MuiTypography-root MuiTypography-body1 css-9ebprp-MuiTypography-root\"\u001b[39m\n  \u001b[36m/>\u001b[39m\n\n  Name \"\":\n  \u001b[36m<p\u001b[39m\n    \u001b[33mclass\u001b[39m=\u001b[32m\"MuiTypography-root MuiTypography-body2 MuiListItemText-primary css-7ctihp-MuiTypography-root\"\u001b[39m\n  \u001b[36m/>\u001b[39m\n\n  Name \"\":\n  \u001b[36m<p\u001b[39m\n    \u001b[33mclass\u001b[39m=\u001b[32m\"MuiTypography-root MuiTypography-body2 MuiListItemText-primary css-7ctihp-MuiTypography-root\"\u001b[39m\n  \u001b[36m/>\u001b[39m\n\n  Name \"\":\n  \u001b[36m<p\u001b[39m\n    \u001b[33mclass\u001b[39m=\u001b[32m\"MuiTypography-root MuiTypography-body2 MuiListItemText-primary css-7ctihp-MuiTypography-root\"\u001b[39m\n  \u001b[36m/>\u001b[39m\n\n  --------------------------------------------------\n  list:\n\n  Name \"\":\n  \u001b[36m<ul\u001b[39m\n    \u001b[33mclass\u001b[39m=\u001b[32m\"MuiList-root MuiList-padding MuiList-dense css-b7dj7n-MuiList-root\"\u001b[39m\n  \u001b[36m/>\u001b[39m\n\n  --------------------------------------------------\n  listitem:\n\n  Name \"\":\n  \u001b[36m<li\u001b[39m\n    \u001b[33mclass\u001b[39m=\u001b[32m\"MuiListItem-root MuiListItem-dense MuiListItem-gutters MuiListItem-padding css-qyw6ft-MuiListItem-root\"\u001b[39m\n  \u001b[36m/>\u001b[39m\n\n  Name \"\":\n  \u001b[36m<li\u001b[39m\n    \u001b[33mclass\u001b[39m=\u001b[32m\"MuiListItem-root MuiListItem-dense MuiListItem-gutters MuiListItem-padding css-qyw6ft-MuiListItem-root\"\u001b[39m\n  \u001b[36m/>\u001b[39m\n\n  Name \"\":\n  \u001b[36m<li\u001b[39m\n    \u001b[33mclass\u001b[39m=\u001b[32m\"MuiListItem-root MuiListItem-dense MuiListItem-gutters MuiListItem-padding css-qyw6ft-MuiListItem-root\"\u001b[39m\n  \u001b[36m/>\u001b[39m\n\n  --------------------------------------------------\n  button:\n\n  Name \"Cancel\":\n  \u001b[36m<button\u001b[39m\n    \u001b[33mclass\u001b[39m=\u001b[32m\"MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeMedium MuiButton-textSizeMedium MuiButton-colorPrimary Mui-disabled MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeMedium MuiButton-textSizeMedium MuiButton-colorPrimary css-o2na8-MuiButtonBase-root-MuiButton-root\"\u001b[39m\n    \u001b[33mdisabled\u001b[39m=\u001b[32m\"\"\u001b[39m\n    \u001b[33mtabindex\u001b[39m=\u001b[32m\"-1\"\u001b[39m\n    \u001b[33mtype\u001b[39m=\u001b[32m\"button\"\u001b[39m\n  \u001b[36m/>\u001b[39m\n\n  Name \"\":\n  \u001b[36m<button\u001b[39m\n    \u001b[33mclass\u001b[39m=\u001b[32m\"MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-containedError MuiButton-sizeMedium MuiButton-containedSizeMedium MuiButton-colorError Mui-disabled MuiButton-root MuiButton-contained MuiButton-containedError MuiButton-sizeMedium MuiButton-containedSizeMedium MuiButton-colorError css-1gn3f0d-MuiButtonBase-root-MuiButton-root\"\u001b[39m\n    \u001b[33mdisabled\u001b[39m=\u001b[32m\"\"\u001b[39m\n    \u001b[33mtabindex\u001b[39m=\u001b[32m\"-1\"\u001b[39m\n    \u001b[33mtype\u001b[39m=\u001b[32m\"button\"\u001b[39m\n  \u001b[36m/>\u001b[39m\n\n  --------------------------------------------------\n  progressbar:\n\n  Name \"\":\n  \u001b[36m<span\u001b[39m\n    \u001b[33mclass\u001b[39m=\u001b[32m\"MuiCircularProgress-root MuiCircularProgress-indeterminate MuiCircularProgress-colorInherit css-gxw4l9-MuiCircularProgress-root\"\u001b[39m\n    \u001b[33mrole\u001b[39m=\u001b[32m\"progressbar\"\u001b[39m\n    \u001b[33mstyle\u001b[39m=\u001b[32m\"width: 24px; height: 24px;\"\u001b[39m\n  \u001b[36m/>\u001b[39m\n\n  --------------------------------------------------\n\nIgnored nodes: comments, script, style\n\u001b[36m<body\u001b[39m\n  \u001b[33mstyle\u001b[39m=\u001b[32m\"padding-right: 1024px; overflow: hidden;\"\u001b[39m\n\u001b[36m>\u001b[39m\n  \u001b[36m<div\u001b[39m\n    \u001b[33maria-hidden\u001b[39m=\u001b[32m\"true\"\u001b[39m\n  \u001b[36m/>\u001b[39m\n  \u001b[36m<div\u001b[39m\n    \u001b[33mclass\u001b[39m=\u001b[32m\"MuiDialog-root MuiModal-root css-1424xw8-MuiModal-root-MuiDialog-root\"\u001b[39m\n    \u001b[33mrole\u001b[39m=\u001b[32m\"presentation\"\u001b[39m\n  \u001b[36m>\u001b[39m\n    \u001b[36m<div\u001b[39m\n      \u001b[33maria-hidden\u001b[39m=\u001b[32m\"true\"\u001b[39m\n      \u001b[33mclass\u001b[39m=\u001b[32m\"MuiBackdrop-root MuiModal-backdrop css-1cennmq-MuiBackdrop-root-MuiDialog-backdrop\"\u001b[39m\n      \u001b[33mstyle\u001b[39m=\u001b[32m\"opacity: 1; webkit-transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\"\u001b[39m\n    \u001b[36m/>\u001b[39m\n    \u001b[36m<div\u001b[39m\n      \u001b[33mdata-testid\u001b[39m=\u001b[32m\"sentinelStart\"\u001b[39m\n      \u001b[33mtabindex\u001b[39m=\u001b[32m\"0\"\u001b[39m\n    \u001b[36m/>\u001b[39m\n    \u001b[36m<div\u001b[39m\n      \u001b[33mclass\u001b[39m=\u001b[32m\"MuiDialog-container MuiDialog-scrollPaper css-19do60a-MuiDialog-container\"\u001b[39m\n      \u001b[33mrole\u001b[39m=\u001b[32m\"presentation\"\u001b[39m\n      \u001b[33mstyle\u001b[39m=\u001b[32m\"opacity: 1; webkit-transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; transition: opacity 225ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\"\u001b[39m\n      \u001b[33mtabindex\u001b[39m=\u001b[32m\"-1\"\u001b[39m\n    \u001b[36m>\u001b[39m\n      \u001b[36m<div\u001b[39m\n        \u001b[33maria-labelledby\u001b[39m=\u001b[32m\"bulk-action-dialog-title\"\u001b[39m\n        \u001b[33maria-modal\u001b[39m=\u001b[32m\"true\"\u001b[39m\n        \u001b[33mclass\u001b[39m=\u001b[32m\"MuiPaper-root MuiPaper-elevation MuiPaper-rounded MuiPaper-elevation24 MuiDialog-paper MuiDialog-paperScrollPaper MuiDialog-paperWidthSm MuiDialog-paperFullWidth css-16htz67-MuiPaper-root-MuiDialog-paper\"\u001b[39m\n        \u001b[33mrole\u001b[39m=\u001b[32m\"dialog\"\u001b[39m\n        \u001b[33mstyle\u001b[39m=\u001b[32m\"--Paper-shadow: 0px 11px 15px -7px rgba(0,0,0,0.2),0px 24px 38px 3px rgba(0,0,0,0.14),0px 9px 46px 8px rgba(0,0,0,0.12);\"\u001b[39m\n      \u001b[36m>\u001b[39m\n        \u001b[36m<h2\u001b[39m\n          \u001b[33mclass\u001b[39m=\u001b[32m\"MuiTypography-root MuiTypography-h6 MuiDialogTitle-root css-rvoa5x-MuiTypography-root-MuiDialogTitle-root\"\u001b[39m\n          \u001b[33mid\u001b[39m=\u001b[32m\"bulk-action-dialog-title\"\u001b[39m\n        \u001b[36m>\u001b[39m\n          \u001b[0mDelete Items?\u001b[0m\n        \u001b[36m</h2>\u001b[39m\n        \u001b[36m<div\u001b[39m\n          \u001b[33mclass\u001b[39m=\u001b[32m\"MuiDialogContent-root css-kw13he-MuiDialogContent-root\"\u001b[39m\n        \u001b[36m>\u001b[39m\n          \u001b[36m<p\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiTypography-root MuiTypography-body1 css-9ebprp-MuiTypography-root\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[0mThis action cannot be undone.\u001b[0m\n          \u001b[36m</p>\u001b[39m\n          \u001b[36m<div\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiBox-root css-1nkluan\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[36m<ul\u001b[39m\n              \u001b[33mclass\u001b[39m=\u001b[32m\"MuiList-root MuiList-padding MuiList-dense css-b7dj7n-MuiList-root\"\u001b[39m\n            \u001b[36m>\u001b[39m\n              \u001b[36m<li\u001b[39m\n                \u001b[33mclass\u001b[39m=\u001b[32m\"MuiListItem-root MuiListItem-dense MuiListItem-gutters MuiListItem-padding css-qyw6ft-MuiListItem-root\"\u001b[39m\n              \u001b[36m>\u001b[39m\n                \u001b[36m<div\u001b[39m\n                  \u001b[33mclass\u001b[39m=\u001b[32m\"MuiListItemText-root MuiListItemText-dense css-cfq8qh-MuiListItemText-root\"\u001b[39m\n                \u001b[36m>\u001b[39m\n                  \u001b[36m<p\u001b[39m\n                    \u001b[33mclass\u001b[39m=\u001b[32m\"MuiTypography-root MuiTypography-body2 MuiListItemText-primary css-7ctihp-MuiTypography-root\"\u001b[39m\n                  \u001b[36m>\u001b[39m\n                    \u001b[0mItem 1\u001b[0m\n                  \u001b[36m</p>\u001b[39m\n                \u001b[36m</div>\u001b[39m\n              \u001b[36m</li>\u001b[39m\n              \u001b[36m<li\u001b[39m\n                \u001b[33mclass\u001b[39m=\u001b[32m\"MuiListItem-root MuiListItem-dense MuiListItem-gutters MuiListItem-padding css-qyw6ft-MuiListItem-root\"\u001b[39m\n              \u001b[36m>\u001b[39m\n                \u001b[36m<div\u001b[39m\n                  \u001b[33mclass\u001b[39m=\u001b[32m\"MuiListItemText-root MuiListItemText-dense css-cfq8qh-MuiListItemText-root\"\u001b[39m\n                \u001b[36m>\u001b[39m\n                  \u001b[36m<p\u001b[39m\n                    \u001b[33mclass\u001b[39m=\u001b[32m\"MuiTypography-root MuiTypography-body2 MuiListItemText-primary css-7ctihp-MuiTypography-root\"\u001b[39m\n                  \u001b[36m>\u001b[39m\n                    \u001b[0mItem 2\u001b[0m\n                  \u001b[36m</p>\u001b[39m\n                \u001b[36m</div>\u001b[39m\n              \u001b[36m</li>\u001b[39m\n              \u001b[36m<li\u001b[39m\n                \u001b[33mclass\u001b[39m=\u001b[32m\"MuiListItem-root MuiListItem-dense MuiListItem-gutters MuiListItem-padding css-qyw6ft-MuiListItem-root\"\u001b[39m\n              \u001b[36m>\u001b[39m\n                \u001b[36m<div\u001b[39m\n                  \u001b[33mclass\u001b[39m=\u001b[32m\"MuiListItemText-root MuiListItemText-dense css-cfq8qh-MuiListItemText-root\"\u001b[39m\n                \u001b[36m>\u001b[39m\n                  \u001b[36m<p\u001b[39m\n                    \u001b[33mclass\u001b[39m=\u001b[32m\"MuiTypography-root MuiTypography-body2 MuiListItemText-primary css-7ctihp-MuiTypography-root\"\u001b[39m\n                  \u001b[36m>\u001b[39m\n                    \u001b[0mItem 3\u001b[0m\n                  \u001b[36m</p>\u001b[39m\n                \u001b[36m</div>\u001b[39m\n              \u001b[36m</li>\u001b[39m\n            \u001b[36m</ul>\u001b[39m\n          \u001b[36m</div>\u001b[39m\n        \u001b[36m</div>\u001b[39m\n        \u001b[36m<div\u001b[39m\n          \u001b[33mclass\u001b[39m=\u001b[32m\"MuiDialogActions-root MuiDialogActions-spacing css-s92rvs-MuiDialogActions-root\"\u001b[39m\n        \u001b[36m>\u001b[39m\n          \u001b[36m<button\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeMedium MuiButton-textSizeMedium MuiButton-colorPrimary Mui-disabled MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeMedium MuiButton-textSizeMedium MuiButton-colorPrimary css-o2na8-MuiButtonBase-root-MuiButton-root\"\u001b[39m\n            \u001b[33mdisabled\u001b[39m=\u001b[32m\"\"\u001b[39m\n            \u001b[33mtabindex\u001b[39m=\u001b[32m\"-1\"\u001b[39m\n            \u001b[33mtype\u001b[39m=\u001b[32m\"button\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[0mCancel\u001b[0m\n          \u001b[36m</button>\u001b[39m\n          \u001b[36m<button\u001b[39m\n            \u001b[33mclass\u001b[39m=\u001b[32m\"MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-containedError MuiButton-sizeMedium MuiButton-containedSizeMedium MuiButton-colorError Mui-disabled MuiButton-root MuiButton-contained MuiButton-containedError MuiButton-sizeMedium MuiButton-containedSizeMedium MuiButton-colorError css-1gn3f0d-MuiButtonBase-root-MuiButton-root\"\u001b[39m\n            \u001b[33mdisabled\u001b[39m=\u001b[32m\"\"\u001b[39m\n            \u001b[33mtabindex\u001b[39m=\u001b[32m\"-1\"\u001b[39m\n            \u001b[33mtype\u001b[39m=\u001b[32m\"button\"\u001b[39m\n          \u001b[36m>\u001b[39m\n            \u001b[36m<span\u001b[39m\n              \u001b[33mclass\u001b[39m=\u001b[32m\"MuiCircularProgress-root MuiCircularProgress-indeterminate MuiCircularProgress-colorInherit css-gxw4l9-MuiCircularProgress-root\"\u001b[39m\n              \u001b[33mrole\u001b[39m=\u001b[32m\"progressbar\"\u001b[39m\n              \u001b[33mstyle\u001b[39m=\u001b[32m\"width: 24px; height: 24px;\"\u001b[39m\n            \u001b[36m>\u001b[39m\n              \u001b[36m<svg\u001b[39m\n                \u001b[33mclass\u001b[39m=\u001b[32m\"MuiCircularProgress-svg css-54pwck-MuiCircularProgress-svg\"\u001b[39m\n                \u001b[33mviewBox\u001b[39m=\u001b[32m\"22 22 44 44\"\u001b[39m\n              \u001b[36m>\u001b[39m\n                \u001b[36m<circle\u001b[39m\n                  \u001b[33mclass\u001b[39m=\u001b[32m\"MuiCircularProgress-circle MuiCircularProgress-circleIndeterminate css-19t5dcl-MuiCircularProgress-circle\"\u001b[39m\n                  \u001b[33mcx\u001b[39m=\u001b[32m\"44\"\u001b[39m\n                  \u001b[33mcy\u001b[39m=\u001b[32m\"44\"\u001b[39m\n                  \u001b[33mfill\u001b[39m=\u001b[32m\"none\"\u001b[39m\n                  \u001b[33mr\u001b[39m=\u001b[32m\"20.2\"\u001b[39m\n                  \u001b[33mstroke-width\u001b[39m=\u001b[32m\"3.6\"\u001b[39m\n                \u001b[36m/>\u001b[39m\n              \u001b[36m</svg>\u001b[39m\n            \u001b[36m</span>\u001b[39m\n          \u001b[36m</button>\u001b[39m\n        \u001b[36m</div>\u001b[39m\n      \u001b[36m</div>\u001b[39m\n    \u001b[36m</div>\u001b[39m\n    \u001b[36m<div\u001b[39m\n      \u001b[33mdata-testid\u001b[39m=\u001b[32m\"sentinelEnd\"\u001b[39m\n      \u001b[33mtabindex\u001b[39m=\u001b[32m\"0\"\u001b[39m\n    \u001b[36m/>\u001b[39m\n  \u001b[36m</div>\u001b[39m\n\u001b[36m</body>\u001b[39m\n    at Object.getElementError (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/@testing-library/dom/dist/config.js:37:19)\n    at /Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/@testing-library/dom/dist/query-helpers.js:76:38\n    at /Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/@testing-library/dom/dist/query-helpers.js:52:17\n    at /Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/@testing-library/dom/dist/query-helpers.js:95:19\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/admin/__tests__/components/BulkActionDialog.test.tsx:55:34)\n    at Promise.then.completed (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/utils.js:298:28)\n    at new Promise (<anonymous>)\n    at callAsyncCircusFn (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/utils.js:231:10)\n    at _callCircusTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:316:40)\n    at processTicksAndRejections (node:internal/process/task_queues:103:5)\n    at _runTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:252:3)\n    at _runTestsForDescribeBlock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:126:9)\n    at _runTestsForDescribeBlock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:121:9)\n    at run (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:71:3)\n    at runAndTransformResultsToJestFormat (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)\n    at jestAdapter (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)\n    at runTestInternal (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:367:16)\n    at runTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:444:34)\n    at Object.worker (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/testWorker.js:106:12)",
              "name": "TestingLibraryElementError"
            }
          ]
        },
        {
          "name": "should show loading spinner when loading",
          "fullName": "BulkActionDialog should show loading spinner when loading",
          "state": "failed",
          "errors": [
            {
              "message": "Error: expect(received).toBeInTheDocument()\n\nreceived value must be an HTMLElement or an SVGElement.\nReceived has value: null\n    at __EXTERNAL_MATCHER_TRAP__ (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/expect/build/index.js:325:30)\n    at Object.throwingMatcher [as toBeInTheDocument] (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/expect/build/index.js:326:15)\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/admin/__tests__/components/BulkActionDialog.test.tsx:67:66)\n    at Promise.then.completed (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/utils.js:298:28)\n    at new Promise (<anonymous>)\n    at callAsyncCircusFn (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/utils.js:231:10)\n    at _callCircusTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:316:40)\n    at processTicksAndRejections (node:internal/process/task_queues:103:5)\n    at _runTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:252:3)\n    at _runTestsForDescribeBlock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:126:9)\n    at _runTestsForDescribeBlock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:121:9)\n    at run (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:71:3)\n    at runAndTransformResultsToJestFormat (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)\n    at jestAdapter (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)\n    at runTestInternal (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:367:16)\n    at runTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:444:34)\n    at Object.worker (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/testWorker.js:106:12)"
            }
          ]
        },
        {
          "name": "should support custom button text",
          "fullName": "BulkActionDialog should support custom button text",
          "state": "passed"
        }
      ]
    },
    {
      "moduleId": "/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/stations/__tests__/components/StationCard.test.tsx",
      "tests": [
        {
          "name": "should render station name and address",
          "fullName": "StationCard Rendering should render station name and address",
          "state": "passed"
        },
        {
          "name": "should render station photo if available",
          "fullName": "StationCard Rendering should render station photo if available",
          "state": "passed"
        },
        {
          "name": "should render rating when available",
          "fullName": "StationCard Rendering should render rating when available",
          "state": "passed"
        },
        {
          "name": "should render distance chip",
          "fullName": "StationCard Rendering should render distance chip",
          "state": "passed"
        },
        {
          "name": "should not crash when photo is missing",
          "fullName": "StationCard Rendering should not crash when photo is missing",
          "state": "passed"
        },
        {
          "name": "should call onSave when bookmark button clicked (not saved)",
          "fullName": "StationCard Save/Delete Actions should call onSave when bookmark button clicked (not saved)",
          "state": "passed"
        },
        {
          "name": "should call onDelete when bookmark button clicked (saved)",
          "fullName": "StationCard Save/Delete Actions should call onDelete when bookmark button clicked (saved)",
          "state": "passed"
        },
        {
          "name": "should show filled bookmark icon when saved",
          "fullName": "StationCard Save/Delete Actions should show filled bookmark icon when saved",
          "state": "passed"
        },
        {
          "name": "should show outline bookmark icon when not saved",
          "fullName": "StationCard Save/Delete Actions should show outline bookmark icon when not saved",
          "state": "passed"
        },
        {
          "name": "should open Google Maps when directions button clicked",
          "fullName": "StationCard Directions Link should open Google Maps when directions button clicked",
          "state": "failed",
          "errors": [
            {
              "message": "Error: expect(jest.fn()).toHaveBeenCalledWith(...expected)\n\nExpected: StringContaining \"google.com/maps\", \"_blank\"\n\nNumber of calls: 0\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/stations/__tests__/components/StationCard.test.tsx:120:27)\n    at Promise.then.completed (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/utils.js:298:28)\n    at new Promise (<anonymous>)\n    at callAsyncCircusFn (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/utils.js:231:10)\n    at _callCircusTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:316:40)\n    at _runTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:252:3)\n    at _runTestsForDescribeBlock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:126:9)\n    at _runTestsForDescribeBlock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:121:9)\n    at _runTestsForDescribeBlock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:121:9)\n    at run (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:71:3)\n    at runAndTransformResultsToJestFormat (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)\n    at jestAdapter (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)\n    at runTestInternal (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:367:16)\n    at runTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:444:34)\n    at Object.worker (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/testWorker.js:106:12)"
            }
          ]
        },
        {
          "name": "should encode address in directions URL",
          "fullName": "StationCard Directions Link should encode address in directions URL",
          "state": "failed",
          "errors": [
            {
              "message": "Error: expect(jest.fn()).toHaveBeenCalledWith(...expected)\n\nExpected: StringContaining \"123%20Main%20St%2C%20San%20Francisco%2C%20CA%2094105\", \"_blank\"\n\nNumber of calls: 0\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/stations/__tests__/components/StationCard.test.tsx:132:27)\n    at Promise.then.completed (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/utils.js:298:28)\n    at new Promise (<anonymous>)\n    at callAsyncCircusFn (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/utils.js:231:10)\n    at _callCircusTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:316:40)\n    at _runTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:252:3)\n    at _runTestsForDescribeBlock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:126:9)\n    at _runTestsForDescribeBlock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:121:9)\n    at _runTestsForDescribeBlock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:121:9)\n    at run (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/run.js:71:3)\n    at runAndTransformResultsToJestFormat (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21)\n    at jestAdapter (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19)\n    at runTestInternal (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:367:16)\n    at runTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:444:34)\n    at Object.worker (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/testWorker.js:106:12)"
            }
          ]
        },
        {
          "name": "should have minimum 44px button heights",
          "fullName": "StationCard Touch Targets should have minimum 44px button heights",
          "state": "passed"
        },
        {
          "name": "should call onSelect when card is clicked",
          "fullName": "StationCard Card Selection should call onSelect when card is clicked",
          "state": "passed"
        },
        {
          "name": "should not call onSelect when button is clicked",
          "fullName": "StationCard Card Selection should not call onSelect when button is clicked",
          "state": "passed"
        }
      ]
    },
    {
      "moduleId": "/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/shared/components/CameraCapture/CameraCapture.test.tsx",
      "tests": [
        {
          "name": "shows loading state while requesting permission",
          "fullName": "CameraCapture Permission handling shows loading state while requesting permission",
          "state": "passed"
        },
        {
          "name": "shows error when permission denied",
          "fullName": "CameraCapture Permission handling shows error when permission denied",
          "state": "passed"
        },
        {
          "name": "shows error when camera unavailable",
          "fullName": "CameraCapture Permission handling shows error when camera unavailable",
          "state": "passed"
        },
        {
          "name": "shows viewfinder when camera access granted",
          "fullName": "CameraCapture Viewfinder shows viewfinder when camera access granted",
          "state": "passed"
        },
        {
          "name": "shows cancel button in viewfinder",
          "fullName": "CameraCapture Viewfinder shows cancel button in viewfinder",
          "state": "passed"
        },
        {
          "name": "calls onCancel when cancel button clicked",
          "fullName": "CameraCapture Viewfinder calls onCancel when cancel button clicked",
          "state": "passed"
        },
        {
          "name": "shows VIN guidance when guidanceType is vin",
          "fullName": "CameraCapture Guidance overlay shows VIN guidance when guidanceType is vin",
          "state": "passed"
        },
        {
          "name": "shows receipt guidance when guidanceType is receipt",
          "fullName": "CameraCapture Guidance overlay shows receipt guidance when guidanceType is receipt",
          "state": "passed"
        },
        {
          "name": "shows upload file button in viewfinder",
          "fullName": "CameraCapture File fallback shows upload file button in viewfinder",
          "state": "passed"
        },
        {
          "name": "switches to file fallback when upload file clicked",
          "fullName": "CameraCapture File fallback switches to file fallback when upload file clicked",
          "state": "passed"
        },
        {
          "name": "renders upload area",
          "fullName": "FileInputFallback renders upload area",
          "state": "passed"
        },
        {
          "name": "shows accepted formats",
          "fullName": "FileInputFallback shows accepted formats",
          "state": "passed"
        },
        {
          "name": "shows max file size",
          "fullName": "FileInputFallback shows max file size",
          "state": "passed"
        },
        {
          "name": "calls onCancel when cancel clicked",
          "fullName": "FileInputFallback calls onCancel when cancel clicked",
          "state": "passed"
        },
        {
          "name": "shows error for invalid file type",
          "fullName": "FileInputFallback shows error for invalid file type",
          "state": "passed"
        },
        {
          "name": "shows error for file too large",
          "fullName": "FileInputFallback shows error for file too large",
          "state": "passed"
        },
        {
          "name": "calls onFileSelect with valid file",
          "fullName": "FileInputFallback calls onFileSelect with valid file",
          "state": "passed"
        },
        {
          "name": "renders nothing when type is none",
          "fullName": "GuidanceOverlay renders nothing when type is none",
          "state": "passed"
        },
        {
          "name": "renders VIN guidance with correct description",
          "fullName": "GuidanceOverlay renders VIN guidance with correct description",
          "state": "passed"
        },
        {
          "name": "renders receipt guidance with correct description",
          "fullName": "GuidanceOverlay renders receipt guidance with correct description",
          "state": "passed"
        },
        {
          "name": "renders document guidance with correct description",
          "fullName": "GuidanceOverlay renders document guidance with correct description",
          "state": "passed"
        }
      ]
    },
    {
      "moduleId": "/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/admin/__tests__/AdminUsersPage.test.tsx",
      "tests": [
        {
          "name": "Module failed to load (Error)",
          "fullName": "Module failed to load (Error)",
          "state": "failed",
          "errors": [
            {
              "message": "TextEncoder is not defined",
              "name": "Error",
              "stack": "ReferenceError: TextEncoder is not defined\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/@auth0/auth0-react/node_modules/@auth0/auth0-spa-js/dist/auth0-spa-js.production.esm.js:1:10973)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1439:24)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at Runtime.requireModuleOrMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1048:21)\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/core/auth/useAdminAccess.ts:7:1)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1439:24)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at Runtime._generateMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1690:34)\n    at Runtime.requireMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:996:39)\n    at Runtime.requireModuleOrMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1046:21)\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/pages/admin/AdminUsersPage.tsx:52:1)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1439:24)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at Runtime.requireModuleOrMock (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1048:21)\n    at Object.<anonymous> (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/admin/__tests__/AdminUsersPage.test.tsx:7:1)\n    at Runtime._execModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1439:24)\n    at Runtime._loadModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:1022:12)\n    at Runtime.requireModule (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runtime/build/index.js:882:12)\n    at jestAdapter (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:77:13)\n    at processTicksAndRejections (node:internal/process/task_queues:103:5)\n    at runTestInternal (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:367:16)\n    at runTest (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/runTest.js:444:34)\n    at Object.worker (/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/node_modules/jest-runner/build/testWorker.js:106:12)"
            }
          ]
        }
      ]
    },
    {
      "moduleId": "/Users/egullickson/Documents/Technology/coding/motovaultpro/frontend/src/features/admin/__tests__/components/ErrorState.test.tsx",
      "tests": [
        {
          "name": "should render error message",
          "fullName": "ErrorState should render error message",
          "state": "passed"
        },
        {
          "name": "should render retry button when onRetry provided",
          "fullName": "ErrorState should render retry button when onRetry provided",
          "state": "passed"
        },
        {
          "name": "should not render retry button when onRetry not provided",
          "fullName": "ErrorState should not render retry button when onRetry not provided",
          "state": "passed"
        },
        {
          "name": "should show default message when error has no message",
          "fullName": "ErrorState should show default message when error has no message",
          "state": "passed"
        }
      ]
    }
  ],
  "unhandledErrors": [],
  "reason": "failed"
}