HashRouter was necessary for legacy reasons, not with v6. Clean up URLs using BrowserRouter instead.
Update how link passing is handled in extension and how params are parsed throughout the app to support.
Differential D15417
[Cashtab] Replace HashRouter with BrowserRouter bytesofman on Feb 10 2024, 15:06. Authored by Tags None Subscribers None
Details
HashRouter was necessary for legacy reasons, not with v6. Clean up URLs using BrowserRouter instead. Update how link passing is handled in extension and how params are parsed throughout the app to support. npm test
Diff Detail
Event TimelineComment Actions Build Bitcoin ABC Diffs / Diff Testing (cashtab-tests) failed.
Failed tests logs: ====== CashTab Unit Tests: <App /> Renders onboarding screen if cashtab.com opened with no local storage and no wallet ====== Error: Unable to find an element by: [data-testid="onboarding"] Ignored nodes: comments, script, style <body> <div> <div class="ant-spin-nested-loading css-dev-only-do-not-override-1rqnfsa" > <div class="ant-spin-container" > <div class="sc-LKuAh jSXNAo" > <div class="sc-kZmsYB eHkWzo" > <div class="sc-RcBXQ gMCskf" > <div class="sc-hzNEM iiFjIO" > <div class="sc-iSDuPN ccpgHi" > <img alt="cashtab" class="sc-fZwumE bcurWd" src="test-file-stub" /> </div> </div> <div class="ant-row ant-row-center css-dev-only-do-not-override-1rqnfsa" data-testid="not-found" type="flex" > <div class="ant-col ant-col-8 css-dev-only-do-not-override-1rqnfsa" > <h1> Page not found </h1> </div> </div> </div> </div> </div> </div> </div> </div> </body> at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27) at Object.<anonymous> (/work/cashtab/src/components/__tests__/AppIntegrations.test.js:163:22) at Promise.then.completed (/work/cashtab/node_modules/jest-circus/build/utils.js:298:28) at new Promise (<anonymous>) at callAsyncCircusFn (/work/cashtab/node_modules/jest-circus/build/utils.js:231:10) at _callCircusTest (/work/cashtab/node_modules/jest-circus/build/run.js:316:40) at processTicksAndRejections (node:internal/process/task_queues:96:5) at _runTest (/work/cashtab/node_modules/jest-circus/build/run.js:252:3) at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:126:9) at _runTestsForDescribeBlock (/work/cashtab/node_modules/jest-circus/build/run.js:121:9) at run (/work/cashtab/node_modules/jest-circus/build/run.js:71:3) at runAndTransformResultsToJestFormat (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapterInit.js:122:21) at jestAdapter (/work/cashtab/node_modules/jest-circus/build/legacy-code-todo-rewrite/jestAdapter.js:79:19) at runTestInternal (/work/cashtab/node_modules/jest-runner/build/runTest.js:367:16) at runTest (/work/cashtab/node_modules/jest-runner/build/runTest.js:444:34) at Object.worker (/work/cashtab/node_modules/jest-runner/build/testWorker.js:106:12) ====== CashTab Unit Tests: <App /> Renders API error if called with wallet in localforage but chronik utxo calls fail ====== Error: Unable to find an element by: [data-testid="api-error"] Ignored nodes: comments, script, style <body> <div> <div class="ant-spin-nested-loading css-dev-only-do-not-override-1rqnfsa" > <div class="ant-spin-container" > <div class="sc-LKuAh jSXNAo" > <div class="sc-kZmsYB eHkWzo" > <div class="sc-RcBXQ gMCskf" > <div class="sc-hzNEM iiFjIO" > <div class="sc-iSDuPN ccpgHi" > <img alt="cashtab" class="sc-fZwumE bcurWd" src="test-file-stub" /> </div> <div class="sc-elJkPf geNavj" data-testid="wallet-info-ctn" > <div class="sc-dEoRIm iVOOxs" > <div class="sc-jtggT dNidya" > Transaction Fixtures </div> <a href="/configure" > <svg class="sc-jTzLTM bTdWCF" /> </a> <div> <button aria-checked="true" class="ant-switch ant-switch-small css-dev-only-do-not-override-1rqnfsa ant-switch-checked" role="switch" type="button" > <div class="ant-switch-handle" /> <span class="ant-switch-inner" > <span class="ant-switch-inner-checked" > <svg class="sc-cSHVUG bgwEHu" /> </span> <span class="ant-switch-inner-unchecked" > <svg class="sc-kAzzGY fUTkYj" /> </span> </span> </button> </div> </div> <div class="sc-ebFjAB kxaSkj" data-testid="balance-xec" > 9,513.12 XEC </div> <div class="sc-jKVCRD bKzIGa" data-testid="balance-fiat" > $ 0.29 USD </div> <p class="sc-kaNhvL kDOvrh" data-testid="ecash-price" > 1 XEC = 0.00003000 USD </p> </div> </div> <div class="ant-row ant-row-center css-dev-only-do-not-override-1rqnfsa" data-testid="not-found" type="flex" > <div class="ant-col ant-col-8 css-dev-only-do-not-override-1rqnfsa" > <h1> Page not found </h1> </div> </div> </div> <div class="sc-iBEsjs jmPiFQ" > <button class="sc-gmeYpB dpikyJ" > <svg /> </button> <button class="sc-gmeYpB eQwTbZ" data-testid="nav-btn-send" > <svg class="sc-kEYyzF dWIuoY" style="margin-top: -9px;" /> </button> <button class="sc-gmeYpB eQwTbZ" data-testid="nav-btn-etokens" > <span aria-label="appstore-add" class="anticon anticon-appstore-add" role="img" style="font-size: 24px;" > <svg aria-hidden="true" data-icon="appstore-add" fill="currentColor" focusable="false" height="1em" viewBox="64 64 896 896" width="1em" > <defs /> <path d="M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zm52 132H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200zM424 712H296V584c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v128H104c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h128v128c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V776h128c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z" /> </svg> </span> </button> <button class="sc-gmeYpB eQwTbZ" data-testid="nav-btn-receive" > <svg /> </button> <div class="sc-chbbiW ktwTIv" data-testid="hamburger" > <span class="sc-kxynE bbUulF" /> <div class="sc-cooIXK gkGTON" data-testid="hamburger-menu" > <button class="sc-fcdeBU RXlWo" data-testid="nav-btn-airdrop" > <p> Airdrop </p> <svg height="33px" width="30px" /> </button> <button class="sc-fcdeBU RXlWo" data-testid="nav-btn-swap" > <p> Swap </p> <span aria-label="swap" class="anticon anticon-swap" role="img" style="font-size: 24px;" > <svg aria-hidden="true" data-icon="swap" fill="currentColor" focusable="false" height="1em" viewBox="64 64 896 896" width="1em" > <path d="M847.9 592H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h605.2L612.9 851c-4.1 5.2-.4 13 6.3 13h72.5c4.9 0 9.5-2.2 12.6-6.1l168.8-214.1c16.5-21 1.6-51.8-25.2-51.8zM872 356H266.8l144.3-183c4.1-5.2.4-13-6.3-13h-72.5c-4.9 0-9.5 2.2-12.6 6.1L150.9 380.2c-16.5 21-1.6 51.8 25.1 51.8h696c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z" /> </svg> </span> </button> <button class="sc-fcdeBU RXlWo" data-testid="nav-btn-signverifymsg" > <p> Sign & Verify </p> <svg class="sc-chPdSV kiHcnD" /> </button> <button class="sc-fcdeBU RXlWo" data-testid="nav-btn-configure" > <p> Settings </p> <svg height="33px" width="30px" /> </button> </div> </div> </div> </div> </div> </div> </div> </div> </body> at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27) at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:86:33 at Object.findByTestId (/work/cashtab/src/components/__tests__/AppIntegrations.test.js:182:22) ====== CashTab Unit Tests: <App /> Adding a contact to Configure.js from clicking on tx history adds it to localforage and wallet context ====== TypeError: Cannot read properties of null (reading 'querySelector') Ignored nodes: comments, script, style <html> <head /> <body> <div> <div class="ant-spin-nested-loading css-dev-only-do-not-override-1rqnfsa" > <div class="ant-spin-container" > <div class="sc-LKuAh jSXNAo" > <div class="sc-kZmsYB eHkWzo" > <div class="sc-RcBXQ gMCskf" > <div class="sc-hzNEM iiFjIO" > <div class="sc-iSDuPN ccpgHi" > <img alt="cashtab" class="sc-fZwumE bcurWd" src="test-file-stub" /> </div> <div class="sc-elJkPf geNavj" data-testid="wallet-info-ctn" > <div class="sc-dEoRIm iVOOxs" > <div class="sc-jtggT dNidya" > [Burned] useWallet Mock </div> <a href="/configure" > <svg class="sc-jTzLTM bTdWCF" /> </a> <div> <button aria-checked="true" class="ant-switch ant-switch-small css-dev-only-do-not-override-1rqnfsa ant-switch-checked" role="switch" type="button" > <div class="ant-switch-handle" /> <span class="ant-switch-inner" > <span class="ant-switch-inner-checked" > <svg class="sc-cSHVUG bgwEHu" /> </span> <span class="ant-switch-inner-unchecked" > <svg class="sc-kAzzGY fUTkYj" /> </span> </span> </button> </div> </div> <div class="sc-ebFjAB kxaSkj" data-testid="balance-xec" > 10,000.00 XEC </div> <div class="sc-jKVCRD bKzIGa" data-testid="balance-fiat" > $ 0.30 USD </div> <p class="sc-kaNhvL kDOvrh" data-testid="ecash-price" > 1 XEC = 0.00003000 USD </p> </div> </div> <div class="ant-row ant-row-center css-dev-only-do-not-override-1rqnfsa" data-testid="not-found" type="flex" > <div class="ant-col ant-col-8 css-dev-only-do-not-override-1rqnfsa" > <h1> Page not found </h1> </div> </div> </div> <div class="sc-iBEsjs jmPiFQ" > <button class="sc-gmeYpB dpikyJ" > <svg /> </button> <button class="sc-gmeYpB eQwTbZ" data-testid="nav-btn-send" > <svg class="sc-kEYyzF dWIuoY" style="margin-top: -9px;" /> </button> <button class="sc-gmeYpB eQwTbZ" data-testid="nav-btn-etokens" > <span aria-label="appstore-add" class="anticon anticon-appstore-add" role="img" style="font-size: 24px;" > <svg aria-h... at /work/cashtab/src/components/__tests__/AppIntegrations.test.js:269:46 at runWithExpensiveErrorDiagnosticsDisabled (/work/cashtab/node_modules/@testing-library/dom/dist/config.js:47:12) at checkCallback (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:124:77) at checkRealTimersCallback (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:118:16) at Timeout.task [as _onTimeout] (/work/cashtab/node_modules/jsdom/lib/jsdom/browser/Window.js:520:19) at listOnTimeout (node:internal/timers:559:17) at processTimers (node:internal/timers:502:7) ====== CashTab Unit Tests: <App /> Adding a contact to an existing contactList by clicking on tx history adds it to localforage and wallet context ====== TypeError: Cannot read properties of null (reading 'querySelector') Ignored nodes: comments, script, style <html> <head /> <body> <div> <div class="ant-spin-nested-loading css-dev-only-do-not-override-1rqnfsa" > <div class="ant-spin-container" > <div class="sc-LKuAh jSXNAo" > <div class="sc-kZmsYB eHkWzo" > <div class="sc-RcBXQ gMCskf" > <div class="sc-hzNEM iiFjIO" > <div class="sc-iSDuPN ccpgHi" > <img alt="cashtab" class="sc-fZwumE bcurWd" src="test-file-stub" /> </div> <div class="sc-elJkPf geNavj" data-testid="wallet-info-ctn" > <div class="sc-dEoRIm iVOOxs" > <div class="sc-jtggT dNidya" > [Burned] useWallet Mock </div> <a href="/configure" > <svg class="sc-jTzLTM bTdWCF" /> </a> <div> <button aria-checked="true" class="ant-switch ant-switch-small css-dev-only-do-not-override-1rqnfsa ant-switch-checked" role="switch" type="button" > <div class="ant-switch-handle" /> <span class="ant-switch-inner" > <span class="ant-switch-inner-checked" > <svg class="sc-cSHVUG bgwEHu" /> </span> <span class="ant-switch-inner-unchecked" > <svg class="sc-kAzzGY fUTkYj" /> </span> </span> </button> </div> </div> <div class="sc-ebFjAB kxaSkj" data-testid="balance-xec" > 10,000.00 XEC </div> <div class="sc-jKVCRD bKzIGa" data-testid="balance-fiat" > $ 0.30 USD </div> <p class="sc-kaNhvL kDOvrh" data-testid="ecash-price" > 1 XEC = 0.00003000 USD </p> </div> </div> <div class="ant-row ant-row-center css-dev-only-do-not-override-1rqnfsa" data-testid="not-found" type="flex" > <div class="ant-col ant-col-8 css-dev-only-do-not-override-1rqnfsa" > <h1> Page not found </h1> </div> </div> </div> <div class="sc-iBEsjs jmPiFQ" > <button class="sc-gmeYpB dpikyJ" > <svg /> </button> <button class="sc-gmeYpB eQwTbZ" data-testid="nav-btn-send" > <svg class="sc-kEYyzF dWIuoY" style="margin-top: -9px;" /> </button> <button class="sc-gmeYpB eQwTbZ" data-testid="nav-btn-etokens" > <span aria-label="appstore-add" class="anticon anticon-appstore-add" role="img" style="font-size: 24px;" > <svg aria-h... at /work/cashtab/src/components/__tests__/AppIntegrations.test.js:333:46 at runWithExpensiveErrorDiagnosticsDisabled (/work/cashtab/node_modules/@testing-library/dom/dist/config.js:47:12) at checkCallback (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:124:77) at checkRealTimersCallback (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:118:16) at Timeout.task [as _onTimeout] (/work/cashtab/node_modules/jsdom/lib/jsdom/browser/Window.js:520:19) at listOnTimeout (node:internal/timers:559:17) at processTimers (node:internal/timers:502:7) ====== CashTab Unit Tests: <App /> Clicking "reply" on a Cashtab Msg correctly populates the SendXec to address and amount fields ====== Error: Unable to find an element by: [data-testid="cashtab-msg-reply"] Ignored nodes: comments, script, style <body> <div> <div class="ant-spin-nested-loading css-dev-only-do-not-override-1rqnfsa" > <div class="ant-spin-container" > <div class="sc-LKuAh jSXNAo" > <div class="sc-kZmsYB eHkWzo" > <div class="sc-RcBXQ gMCskf" > <div class="sc-hzNEM iiFjIO" > <div class="sc-iSDuPN ccpgHi" > <img alt="cashtab" class="sc-fZwumE bcurWd" src="test-file-stub" /> </div> <div class="sc-elJkPf geNavj" data-testid="wallet-info-ctn" > <div class="sc-dEoRIm iVOOxs" > <div class="sc-jtggT dNidya" > [Burned] useWallet Mock </div> <a href="/configure" > <svg class="sc-jTzLTM bTdWCF" /> </a> <div> <button aria-checked="true" class="ant-switch ant-switch-small css-dev-only-do-not-override-1rqnfsa ant-switch-checked" role="switch" type="button" > <div class="ant-switch-handle" /> <span class="ant-switch-inner" > <span class="ant-switch-inner-checked" > <svg class="sc-cSHVUG bgwEHu" /> </span> <span class="ant-switch-inner-unchecked" > <svg class="sc-kAzzGY fUTkYj" /> </span> </span> </button> </div> </div> <div class="sc-ebFjAB kxaSkj" data-testid="balance-xec" > 10,000.00 XEC </div> <div class="sc-jKVCRD bKzIGa" data-testid="balance-fiat" > $ 0.30 USD </div> <p class="sc-kaNhvL kDOvrh" data-testid="ecash-price" > 1 XEC = 0.00003000 USD </p> </div> </div> <div class="ant-row ant-row-center css-dev-only-do-not-override-1rqnfsa" data-testid="not-found" type="flex" > <div class="ant-col ant-col-8 css-dev-only-do-not-override-1rqnfsa" > <h1> Page not found </h1> </div> </div> </div> <div class="sc-iBEsjs jmPiFQ" > <button class="sc-gmeYpB dpikyJ" > <svg /> </button> <button class="sc-gmeYpB eQwTbZ" data-testid="nav-btn-send" > <svg class="sc-kEYyzF dWIuoY" style="margin-top: -9px;" /> </button> <button class="sc-gmeYpB eQwTbZ" data-testid="nav-btn-etokens" > <span aria-label="appstore-add" class="anticon anticon-appstore-add" role="img" style="font-size: 24px;" > <svg aria-hidden="true" data-icon="appstore-add" fill="currentColor" focusable="false" height="1em" viewBox="64 64 896 896" width="1em" > <defs /> <path d="M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zm52 132H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200zM424 712H296V584c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v128H104c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h128v128c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V776h128c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z" /> </svg> </span> </button> <button class="sc-gmeYpB eQwTbZ" data-testid="nav-btn-receive" > <svg /> </button> <div class="sc-chbbiW ktwTIv" data-testid="hamburger" > <span class="sc-kxynE bbUulF" /> <div class="sc-cooIXK gkGTON" data-testid="hamburger-menu" > <button class="sc-fcdeBU RXlWo" data-testid="nav-btn-airdrop" > <p> Airdrop </p> <svg height="33px" width="30px" /> </button> <button class="sc-fcdeBU RXlWo" data-testid="nav-btn-swap" > <p> Swap </p> <span aria-label="swap" class="anticon anticon-swap" role="img" style="font-size: 24px;" > <svg aria-hidden="true" data-icon="swap" fill="currentColor" focusable="false" height="1em" viewBox="64 64 896 896" width="1em" > <path d="M847.9 592H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h605.2L612.9 851c-4.1 5.2-.4 13 6.3 13h72.5c4.9 0 9.5-2.2 12.6-6.1l168.8-214.1c16.5-21 1.6-51.8-25.2-51.8zM872 356H266.8l144.3-183c4.1-5.2.4-13-6.3-13h-72.5c-4.9 0-9.5 2.2-12.6 6.1L150.9 380.2c-16.5 21-1.6 51.8 25.1 51.8h696c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8z" /> </svg> </span> </button> <button class="sc-fcdeBU RXlWo" data-testid="nav-btn-signverifymsg" > <p> Sign & Verify </p> <svg class="sc-chPdSV kiHcnD" /> </button> <button class="sc-fcdeBU RXlWo" data-testid="nav-btn-configure" > <p> Settings </p> <svg height="33px" width="30px" /> </button> </div> </div> </div> </div> </div> </div> </div> </div> </body> at waitForWrapper (/work/cashtab/node_modules/@testing-library/dom/dist/wait-for.js:163:27) at Object.<anonymous> (/work/cashtab/src/components/__tests__/AppIntegrations.test.js:449:22) Each failure log is accessible here: Comment Actions
|