Could be useful for some situations
Details
- Reviewers
Fabien - Group Reviewers
Restricted Project - Commits
- rABC1eda9c125199: [Cashtab] Support testnet with env variable
npm test succeeds if REACT_APP_TESTNET=false`
Update .env so that REACT_APP_TESTNET=TRUE
npm start
built site with this done is at https://670e5f1cdf65ca6e95978d34--cashtab-local-dev.netlify.app/
Diff Detail
- Repository
- rABC Bitcoin ABC
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
punch list
- ticker tXEC not XEC
- Disable faucets
- disable fiat price lookup, hardcode it to zero
- env var needs to be false for tests to pass (mb? but def for deployment. if we want to deploy test.cashtab.com, would handle it in deployment)
Failed tests logs:
====== CashTab Unit Tests: <Receive /> Renders as expected on desktop, including copy paste functionality of clicking on the QR code ====== Error: expect(element).toHaveTextContent() Expected element to have text content: Address Copied to Clipboardecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g Received: Address Copied to Clipboardectest:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cyt8ct2nve at Object.toHaveTextContent (/work/cashtab/src/components/Receive/__tests__/Receive.test.js:121:11)
Each failure log is accessible here:
CashTab Unit Tests: <Receive /> Renders as expected on desktop, including copy paste functionality of clicking on the QR code
Failed tests logs:
====== CashTab Unit Tests: Cashtab validation functions Parses user input address strings with parseAddressInput parseAddressInput: Valid address with valid amount param exceeding user balance by one satoshi, no decimals ====== Error: expect(received).toStrictEqual(expected) // deep equality - Expected - 1 + Received + 1 @@ -3,11 +3,11 @@ "error": false, "isAlias": false, "value": "ecash:qq9h6d0a5q65fgywv4ry64x04ep906mdku8f0gxfgx", }, "amount": Object { - "error": "Amount 500,001.00 XEC exceeds wallet balance of 500,000.00 XEC", + "error": "Amount 500,001.00 tXEC exceeds wallet balance of 500,000.00 tXEC", "value": "500001", }, "queryString": Object { "error": false, "value": "amount=500001", at Object.toStrictEqual (/work/cashtab/src/validation/__tests__/index.test.js:351:19) 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:95: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 _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: Cashtab validation functions Parses user input address strings with parseAddressInput parseAddressInput: Valid address with invalid amount param (too many decimal places) ====== Error: expect(received).toStrictEqual(expected) // deep equality - Expected - 1 + Received + 1 @@ -3,11 +3,11 @@ "error": false, "isAlias": false, "value": "ecash:qq9h6d0a5q65fgywv4ry64x04ep906mdku8f0gxfgx", }, "amount": Object { - "error": "XEC transactions do not support more than 2 decimal places", + "error": "tXEC transactions do not support more than 2 decimal places", "value": "123.456", }, "queryString": Object { "error": false, "value": "amount=123.456", at Object.toStrictEqual (/work/cashtab/src/validation/__tests__/index.test.js:351:19) 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:95: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 _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: Cashtab validation functions Parses user input address strings with parseAddressInput parseAddressInput: Valid primary address & amount, invalid secondary amount ====== Error: expect(received).toStrictEqual(expected) // deep equality - Expected - 1 + Received + 1 @@ -7,11 +7,11 @@ "amount": Object { "error": false, "value": "110", }, "parsedAdditionalXecOutputs": Object { - "error": "Invalid amount 5.123 for address ecash:qp4dxtmjlkc6upn29hh9pr2u8rlznwxeqqy0qkrjp5: XEC transactions do not support more than 2 decimal places", + "error": "Invalid amount 5.123 for address ecash:qp4dxtmjlkc6upn29hh9pr2u8rlznwxeqqy0qkrjp5: tXEC transactions do not support more than 2 decimal places", "value": null, }, "queryString": Object { "error": false, "value": "amount=110&addr=ecash:qp4dxtmjlkc6upn29hh9pr2u8rlznwxeqqy0qkrjp5&amount=5.123", at Object.toStrictEqual (/work/cashtab/src/validation/__tests__/index.test.js:351:19) 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:95: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 _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: Cashtab validation functions Determines if a user input send amount is valid isValidXecSendAmount: A fiat value that converts to one satoshi more than the user total balance is rejected ====== Error: expect(received).toBe(expected) // Object.is equality Expected: "Amount 1,000.01 XEC exceeds wallet balance of 1,000.00 XEC" Received: "Amount 1,000.01 tXEC exceeds wallet balance of 1,000.00 tXEC" at Object.toBe (/work/cashtab/src/validation/__tests__/index.test.js:446:19) 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:95: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 _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: Cashtab validation functions Determines if a user input multi-send CSV is valid isValidMultiSendUserInput: Rejects correctly formed multisend output for amount exceeding wallet total balance by 1 satoshi ====== Error: expect(received).toBe(expected) // Object.is equality Expected: "Total amount sent (110.00 XEC) exceeds wallet balance of 109.99 XEC" Received: "Total amount sent (110.00 tXEC) exceeds wallet balance of 109.99 tXEC" at Object.toBe (/work/cashtab/src/validation/__tests__/index.test.js:467:19) 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:95: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 _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: Cashtab validation functions Determines if a user input multi-send CSV is valid isValidMultiSendUserInput: Returns expected error msg for invalid value (dust) ====== Error: expect(received).toBe(expected) // Object.is equality Expected: "Send amount must be at least 5.46 XEC: check value \"1\" at line 1" Received: "Send amount must be at least 5.46 tXEC: check value \"1\" at line 1" at Object.toBe (/work/cashtab/src/validation/__tests__/index.test.js:467:19) 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:95: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 _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: Cashtab validation functions Determines if a user input multi-send CSV is valid isValidMultiSendUserInput: Returns expected error msg and line numberfor invalid value (too many decimal places) ====== Error: expect(received).toBe(expected) // Object.is equality Expected: "XEC transactions do not support more than 2 decimal places: check value \"10.123\" at line 2" Received: "tXEC transactions do not support more than 2 decimal places: check value \"10.123\" at line 2" at Object.toBe (/work/cashtab/src/validation/__tests__/index.test.js:467:19) 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:95: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 _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: <Home /> Renders the loading component while loading, then the Home screen ====== Error: Unable to find an element with the text: 9,513.12 XEC. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style <body> <div> <div class="sc-dEfkYy gCfMiu" > <div class="Toastify" /> <div class="sc-cqPOvA clVrIX" > <div class="sc-gNJABI jWsBXr" > <div class="sc-kEmuub hIthwo" > <img alt="cashtab" class="sc-bbkauy jKzBhk" src="test-file-stub" /> </div> <div class="sc-eNNmBn edTXfc" > <select class="sc-eEieub iBVdYg" data-testid="wallet-select" id="wallets" name="wallets" > <option class="sc-RbTVP hMcPpG" value="Transaction Fixtures" > Transaction Fixtures </option> </select> <div class="sc-eopZyb iDutwN" > <button aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g" class="sc-iQNlJl dQNUoI" > <svg title="copy-paste" /> </button> <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gyYfmt" > <input checked="" class="sc-jzgbtB jgfSAg" id="show-hide-balance" name="show-hide-balance" title="show-hide-balance" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="show-hide-balance" > <span class="sc-gFaPwZ jegjwl" data-off="" data-on="" /> <span class="sc-fhYwyz jdgzKk" /> </label> </div> </div> </div> </div> <div class="sc-dznXNo epBKIx" title="Wallet Info" > <div class="sc-drlKqa gzObdq" title="Balance in XEC" > 9,513.12 tXEC </div> <div class="sc-bIqbHp eQIbJZ" title="Balance in Local Currency" > $ 0.29 USD </div> <p class="sc-jxGEyO dzLOSG" title="Price in Local Currency" > 1 tXEC = 0.00003000 USD </p> </div> <div class="sc-iuDHTM bRkhcV" > <div class="sc-fOKMvo bHWHi" data-testid="tx-history" > <div class="sc-kGXeez dgJWRP" > <div class="sc-kpOJdX jTrDqc" > <div class="sc-dxgOiQ ePtNdN" type="Received" > <div class="sc-ckVGcZ kdsepy" > <svg title="tx-received" /> <div class="sc-eNQAEJ hezDIi" > <div class="sc-kEYyzF fVmxRF" > <div class="sc-hMqMXs eMcfen" > Received from <a class="sc-gipzik ORDkV" href="https://explorer.e.cash/address/ecash:qp89xgjhcqdnzzemts0aj378nfe2mhu9yvxj9nhgg6" rel="noreferrer" target="_blank" > qp8...gg6 </a> </div> <div class="sc-kAzzGY gDpRAi" title="Loading" > <div /> <div /> <div /> <div /> </div> </div> ... 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.findByText (/work/cashtab/src/components/Home/__tests__/Home.test.js:113:29) at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:545:9) at processTimers (node:internal/timers:519:7) ====== CashTab Unit Tests: <Nfts /> If we switch wallets, listings that were previously organized as "My Listing" are instead organized as for sale ====== Error: Unable to find an element with the text: 9,513.12 XEC. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style <body> <div> <div class="sc-dEfkYy gCfMiu" > <div class="Toastify" /> <div class="sc-cqPOvA clVrIX" > <div class="sc-gNJABI jWsBXr" > <div class="sc-kEmuub hIthwo" > <img alt="cashtab" class="sc-bbkauy jKzBhk" src="test-file-stub" /> <div class="sc-ghsgMZ ceeeOL" > Listed NFTs <svg title="NFT" /> </div> </div> <div class="sc-eNNmBn edTXfc" > <select class="sc-eEieub iBVdYg" data-testid="wallet-select" id="wallets" name="wallets" > <option class="sc-RbTVP hMcPpG" value="Transaction Fixtures" > Transaction Fixtures </option> <option class="sc-RbTVP hMcPpG" value="NFT Trading [BURNED]" > NFT Trading [BURNED] </option> </select> <div class="sc-eopZyb iDutwN" > <button aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g" class="sc-iQNlJl dQNUoI" > <svg title="copy-paste" /> </button> <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gyYfmt" > <input checked="" class="sc-jzgbtB jgfSAg" id="show-hide-balance" name="show-hide-balance" title="show-hide-balance" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="show-hide-balance" > <span class="sc-gFaPwZ jegjwl" data-off="" data-on="" /> <span class="sc-fhYwyz jdgzKk" /> </label> </div> </div> </div> </div> <div class="sc-dznXNo epBKIx" title="Wallet Info" > <div class="sc-drlKqa gzObdq" title="Balance in XEC" > 9,513.12 tXEC </div> <div class="sc-bIqbHp eQIbJZ" title="Balance in Local Currency" > $ 0.29 USD </div> <p class="sc-jxGEyO dzLOSG" title="Price in Local Currency" > 1 tXEC = 0.00003000 USD </p> </div> <div class="sc-iuDHTM bRkhcV" > <div class="sc-eLdqWK lcKXEg" title="Listed NFTs" > <div class="sc-iSDuPN iLaLMx" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo bckJer" > <input checked="" class="sc-jzgbtB jgfSAg" id="Toggle NFTs" name="Toggle NFTs" title="Toggle NFTs" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="Toggle NFTs" > <span class="sc-gFaPwZ hktLQl" data-off="" data-on="" /> <span class="sc-fhYwyz dqlgzj" /> </label> </div> </div> <div class="sc-gqPbQI czjmLG" > Toggle Buy / Manage Listings </div> </div> <div class="sc-iiUIRa dgWsgt" > Manage your listings </div> <p> You do not have any listed NFTs </p> </div> </div> </div> <div class="sc-yZwTr cWMKbM" > <button class="sc-FQuPU doSOrh" > <svg /> </button> <button aria-label="Send Screen" class="sc-FQuPU doSOrh" style="padding-bottom: 10px;" > <div class="sc-iwsKbI cuDgAv" > <svg title="tx-sent" /> </div> </button> <button aria-label="Tokens" class="sc-FQuPU doSOrh" > <svg title="Tokens" /> </button> <button aria-label="Receive" class="sc-FQuPU doSOrh" > <svg title="tx-received" /> </button> <div class="sc-fjhmcy jOtBOs" title="Show Other Screens" > <span class="sc-hwcHae jiKkID" /> <div class="sc-lnmtFM dXSWsQ" title="Other Screens" > <button class="sc-erNlkL jUqjSc" > <p> Wallet Backup </p> <svg title="wallet" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Wallets </p> <svg title="wallets" /> </button> <button class="sc-erNlkL glzCLH" > <p> Listed NFTs </p> <svg title="NFT" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Contacts </p> <svg title="Contact List" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Airdrop </p> <svg title="tx-airdrop" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Rewards </p> <svg title="Cashtab Rewards" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Swap </p> <svg title="swap" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Sign & Verify </p> <svg class="sc-htpNat bPFBeM" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Settings </p> <svg title="settings" /> </button> </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.findByText (/work/cashtab/src/components/Nfts/__tests__/index.test.js:544:29) ====== CashTab Unit Tests: <SendXec /> rendered with params in URL Legacy params. Address and value keys are set and valid. ====== Error: Unable to find an element with the text: 9,513.12 XEC. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style <body> <div> <div class="sc-dEfkYy gCfMiu" > <div class="Toastify" /> <div class="sc-cqPOvA clVrIX" > <div class="sc-gNJABI jWsBXr" > <div class="sc-kEmuub hIthwo" > <img alt="cashtab" class="sc-bbkauy jKzBhk" src="test-file-stub" /> </div> <div class="sc-eNNmBn edTXfc" > <select class="sc-eEieub iBVdYg" data-testid="wallet-select" id="wallets" name="wallets" > <option class="sc-RbTVP hMcPpG" value="Transaction Fixtures" > Transaction Fixtures </option> </select> <div class="sc-eopZyb iDutwN" > <button aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g" class="sc-iQNlJl dQNUoI" > <svg title="copy-paste" /> </button> <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gyYfmt" > <input checked="" class="sc-jzgbtB jgfSAg" id="show-hide-balance" name="show-hide-balance" title="show-hide-balance" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="show-hide-balance" > <span class="sc-gFaPwZ jegjwl" data-off="" data-on="" /> <span class="sc-fhYwyz jdgzKk" /> </label> </div> </div> </div> </div> <div class="sc-dznXNo epBKIx" title="Wallet Info" > <div class="sc-drlKqa gzObdq" title="Balance in XEC" > 9,513.12 tXEC </div> <div class="sc-bIqbHp eQIbJZ" title="Balance in Local Currency" > $ 0.29 USD </div> <p class="sc-jxGEyO dzLOSG" title="Price in Local Currency" > 1 tXEC = 0.00003000 USD </p> </div> <div class="sc-iuDHTM bRkhcV" > <div class="sc-VJcYb Uszwj" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gYUTVy" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle Multisend" name="Toggle Multisend" title="Toggle Multisend" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle Multisend" > <span class="sc-gFaPwZ hktLQl" data-off="Send to one" data-on="Send to many" /> <span class="sc-fhYwyz cnLmNg" /> </label> </div> </div> </div> <div class="sc-jtggT cVUzSi" > <div class="sc-ipZHIp jSDPgp" > <div class="sc-bmyXtO fetwxd" > <div class="sc-dEoRIm bvGLHm" > <div class="sc-gGBfsJ bcyGFW" > <div class="sc-jnlKLf iMOzHB" > <input class="sc-fYxtnH sc-ktHwxA dxPESR" disabled="" name="address" placeholder="Address" value="ecash:qp33mh3a7qq7p8yulhnvwty2uq5ynukqcvuxmvzfhm" /> <button class="sc-jqCOkK hZNrJH" title="Scan QR Code" > <svg /> </button> </div> <div class="sc-lhVmIH kOeoRj" /> </div> <div class="sc-hmXxxW frxJjy" > <a class="sc-iuJeZd ncRQs" href="https://explorer.e.cash/address/false" rel="noreferrer" target="_blank" /> </div> </div> <div class="sc-gGBfsJ bcyGFW" > <div class="sc-jnlKLf iMOzHB" > <input class="sc-fYxtnH sc-ktHwxA dxPESR" disabled="" name="amount" placeholder="Amount" step="0.01" type="number" value="500" /> <select class="sc-iELTvK sc-cmTdod iEdEXA" data-testid="currency-select-dropdown" disabled="" > <option class="sc-btzYZH dfuDxf" data-testid="xec-option" value="XEC" > XEC </option> <option class="sc-btzYZH dfuDxf" data-testid="fiat-option" value="USD" > USD </option> </select> <button class="sc-cIShpX gJZnWf" disabled="" > max </button> </div> <div class="sc-lhVmIH kOeoRj" /> </div> </div> </div> <div class="sc-iGrrsa jIFmiZ" > <div class="sc-gGBfsJ bcyGFW" > <textarea class="sc-hEsumM kttucH" height="142" name="multiAddressInput" placeholder="One address & amount per line, separated by comma e.g. ecash:qpatql05s9jfavnu0tv6lkjjk25n6tmj9gkpyrlwu8,500 ecash:qzvydd4n3lm3xv62cx078nu9rg0e3srmqq0knykfed,700" /> <div class="sc-kTUwUJ inNpAB" > <div class="sc-dqBHgY foXbGf" /> </div> </div> </div> </div> <div class="sc-jVODtj iheIHG" > <div class="sc-kUaPvJ gjMMZr" > <div class="sc-giadOv cbmuSd" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo bckJer" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle Cashtab Msg" name="Toggle Cashtab Msg" title="Toggle Cashtab Msg" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle Cashtab Msg" > <span class="sc-gFaPwZ hktLQl" data-off="✉️" data-on="✉️" /> <span class="sc-fhYwyz dqlgzj" /> </label> </div> </div> <div class="sc-fONwsr dGcugg" > Cashtab Msg </div> </div> </div> <div class="sc-kUaPvJ gjMMZr" > <div class="sc-giadOv cbmuSd" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo bckJer" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle op_return_raw" name="Toggle op_return_raw" title="Toggle op_return_raw" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle op_return_raw" > <span class="sc-gFaPwZ hktLQl" data-off="" data-on="" /> <span class="sc-fhYwyz dqlgzj" /> </label> </div> </div> <div class="sc-fONwsr dGcugg" > op_return_raw </div> </div> </div> </div> <div class="sc-cqCuEk fZNZTU" > <div class="sc-iqzUVk cugiDL" > 500 tXEC </div> <div class="sc-hMFtBS hcwxtD" > = $ 0.02 USD </div> </div> <button class="sc-bwCtUz sc-eTuwsz hBLfGp" style="margin-top: 12px;" > Send </button> </div> </div> <div class="sc-yZwTr cWMKbM" > <button class="sc-FQuPU doSOrh" > <svg /> </button> <button aria-label="Send Screen" class="sc-FQuPU eSnnLf" style="padding-bottom: 10px;" > <div class="sc-iwsKbI cuDgAv" > <svg title="tx-sent" /> </div> </button> <button aria-label="Tokens" class="sc-FQuPU doSOrh" > <svg title="Tokens" /> </button> <button aria-label="Receive" class="sc-FQuPU doSOrh" > <svg title="tx-received" /> </button> <div class="sc-fjhmcy jOtBOs" title="Show Other Screens" > <span class="sc-hwcHae jiKkID" /> <div class="sc-lnmtFM dXSWsQ" title="Other Screens" > <button class="sc-erNlkL jUqjSc" > <p> Wallet Backup </p> <svg title="wallet" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Wallets </p> <svg title="wallets" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Listed NFTs </p> <svg title="NFT" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Contacts </p> <svg title="Contact List" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Airdrop </p> <svg title="tx-airdrop" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Rewards </p> <svg title="Cashtab Rewards" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Swap </p> <svg title="swap" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Sign & Verify </p> <svg class="sc-htpNat bPFBeM" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Settings </p> <svg title="settings" /> </button> </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.findByText (/work/cashtab/src/components/Send/__tests__/SendByUrlParams.test.js:109:29) at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:545:9) at processTimers (node:internal/timers:519:7) ====== CashTab Unit Tests: <SendXec /> rendered with params in URL Legacy params. Address and value keys are set and valid. Invalid bip21 string is ignored. ====== Error: Unable to find an element with the text: 9,513.12 XEC. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style <body> <div> <div class="sc-dEfkYy gCfMiu" > <div class="Toastify" /> <div class="sc-cqPOvA clVrIX" > <div class="sc-gNJABI jWsBXr" > <div class="sc-kEmuub hIthwo" > <img alt="cashtab" class="sc-bbkauy jKzBhk" src="test-file-stub" /> </div> <div class="sc-eNNmBn edTXfc" > <select class="sc-eEieub iBVdYg" data-testid="wallet-select" id="wallets" name="wallets" > <option class="sc-RbTVP hMcPpG" value="Transaction Fixtures" > Transaction Fixtures </option> </select> <div class="sc-eopZyb iDutwN" > <button aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g" class="sc-iQNlJl dQNUoI" > <svg title="copy-paste" /> </button> <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gyYfmt" > <input checked="" class="sc-jzgbtB jgfSAg" id="show-hide-balance" name="show-hide-balance" title="show-hide-balance" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="show-hide-balance" > <span class="sc-gFaPwZ jegjwl" data-off="" data-on="" /> <span class="sc-fhYwyz jdgzKk" /> </label> </div> </div> </div> </div> <div class="sc-dznXNo epBKIx" title="Wallet Info" > <div class="sc-drlKqa gzObdq" title="Balance in XEC" > 9,513.12 tXEC </div> <div class="sc-bIqbHp eQIbJZ" title="Balance in Local Currency" > $ 0.29 USD </div> <p class="sc-jxGEyO dzLOSG" title="Price in Local Currency" > 1 tXEC = 0.00003000 USD </p> </div> <div class="sc-iuDHTM bRkhcV" > <div class="sc-VJcYb Uszwj" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gYUTVy" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle Multisend" name="Toggle Multisend" title="Toggle Multisend" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle Multisend" > <span class="sc-gFaPwZ hktLQl" data-off="Send to one" data-on="Send to many" /> <span class="sc-fhYwyz cnLmNg" /> </label> </div> </div> </div> <div class="sc-jtggT cVUzSi" > <div class="sc-ipZHIp jSDPgp" > <div class="sc-bmyXtO fetwxd" > <div class="sc-dEoRIm bvGLHm" > <div class="sc-gGBfsJ bcyGFW" > <div class="sc-jnlKLf iMOzHB" > <input class="sc-fYxtnH sc-ktHwxA dxPESR" disabled="" name="address" placeholder="Address" value="ecash:qp33mh3a7qq7p8yulhnvwty2uq5ynukqcvuxmvzfhm" /> <button class="sc-jqCOkK hZNrJH" title="Scan QR Code" > <svg /> </button> </div> <div class="sc-lhVmIH kOeoRj" /> </div> <div class="sc-hmXxxW frxJjy" > <a class="sc-iuJeZd ncRQs" href="https://explorer.e.cash/address/false" rel="noreferrer" target="_blank" /> </div> </div> <div class="sc-gGBfsJ bcyGFW" > <div class="sc-jnlKLf iMOzHB" > <input class="sc-fYxtnH sc-ktHwxA dxPESR" disabled="" name="amount" placeholder="Amount" step="0.01" type="number" value="500" /> <select class="sc-iELTvK sc-cmTdod iEdEXA" data-testid="currency-select-dropdown" disabled="" > <option class="sc-btzYZH dfuDxf" data-testid="xec-option" value="XEC" > XEC </option> <option class="sc-btzYZH dfuDxf" data-testid="fiat-option" value="USD" > USD </option> </select> <button class="sc-cIShpX gJZnWf" disabled="" > max </button> </div> <div class="sc-lhVmIH kOeoRj" /> </div> </div> </div> <div class="sc-iGrrsa jIFmiZ" > <div class="sc-gGBfsJ bcyGFW" > <textarea class="sc-hEsumM kttucH" height="142" name="multiAddressInput" placeholder="One address & amount per line, separated by comma e.g. ecash:qpatql05s9jfavnu0tv6lkjjk25n6tmj9gkpyrlwu8,500 ecash:qzvydd4n3lm3xv62cx078nu9rg0e3srmqq0knykfed,700" /> <div class="sc-kTUwUJ inNpAB" > <div class="sc-dqBHgY foXbGf" /> </div> </div> </div> </div> <div class="sc-jVODtj iheIHG" > <div class="sc-kUaPvJ gjMMZr" > <div class="sc-giadOv cbmuSd" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo bckJer" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle Cashtab Msg" name="Toggle Cashtab Msg" title="Toggle Cashtab Msg" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle Cashtab Msg" > <span class="sc-gFaPwZ hktLQl" data-off="✉️" data-on="✉️" /> <span class="sc-fhYwyz dqlgzj" /> </label> </div> </div> <div class="sc-fONwsr dGcugg" > Cashtab Msg </div> </div> </div> <div class="sc-kUaPvJ gjMMZr" > <div class="sc-giadOv cbmuSd" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo bckJer" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle op_return_raw" name="Toggle op_return_raw" title="Toggle op_return_raw" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle op_return_raw" > <span class="sc-gFaPwZ hktLQl" data-off="" data-on="" /> <span class="sc-fhYwyz dqlgzj" /> </label> </div> </div> <div class="sc-fONwsr dGcugg" > op_return_raw </div> </div> </div> </div> <div class="sc-cqCuEk fZNZTU" > <div class="sc-iqzUVk cugiDL" > 500 tXEC </div> <div class="sc-hMFtBS hcwxtD" > = $ 0.02 USD </div> </div> <button class="sc-bwCtUz sc-eTuwsz hBLfGp" style="margin-top: 12px;" > Send </button> </div> </div> <div class="sc-yZwTr cWMKbM" > <button class="sc-FQuPU doSOrh" > <svg /> </button> <button aria-label="Send Screen" class="sc-FQuPU eSnnLf" style="padding-bottom: 10px;" > <div class="sc-iwsKbI cuDgAv" > <svg title="tx-sent" /> </div> </button> <button aria-label="Tokens" class="sc-FQuPU doSOrh" > <svg title="Tokens" /> </button> <button aria-label="Receive" class="sc-FQuPU doSOrh" > <svg title="tx-received" /> </button> <div class="sc-fjhmcy jOtBOs" title="Show Other Screens" > <span class="sc-hwcHae jiKkID" /> <div class="sc-lnmtFM dXSWsQ" title="Other Screens" > <button class="sc-erNlkL jUqjSc" > <p> Wallet Backup </p> <svg title="wallet" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Wallets </p> <svg title="wallets" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Listed NFTs </p> <svg title="NFT" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Contacts </p> <svg title="Contact List" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Airdrop </p> <svg title="tx-airdrop" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Rewards </p> <svg title="Cashtab Rewards" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Swap </p> <svg title="swap" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Sign & Verify </p> <svg class="sc-htpNat bPFBeM" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Settings </p> <svg title="settings" /> </button> </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.findByText (/work/cashtab/src/components/Send/__tests__/SendByUrlParams.test.js:177:29) at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:545:9) at processTimers (node:internal/timers:519:7) ====== CashTab Unit Tests: <SendXec /> rendered with params in URL Legacy params. Address field is populated + disabled while value field is empty + enabled if legacy url params have address defined and value present as undefined ====== Error: Unable to find an element with the text: 9,513.12 XEC. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style <body> <div> <div class="sc-dEfkYy gCfMiu" > <div class="Toastify" /> <div class="sc-cqPOvA clVrIX" > <div class="sc-gNJABI jWsBXr" > <div class="sc-kEmuub hIthwo" > <img alt="cashtab" class="sc-bbkauy jKzBhk" src="test-file-stub" /> </div> <div class="sc-eNNmBn edTXfc" > <select class="sc-eEieub iBVdYg" data-testid="wallet-select" id="wallets" name="wallets" > <option class="sc-RbTVP hMcPpG" value="Transaction Fixtures" > Transaction Fixtures </option> </select> <div class="sc-eopZyb iDutwN" > <button aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g" class="sc-iQNlJl dQNUoI" > <svg title="copy-paste" /> </button> <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gyYfmt" > <input checked="" class="sc-jzgbtB jgfSAg" id="show-hide-balance" name="show-hide-balance" title="show-hide-balance" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="show-hide-balance" > <span class="sc-gFaPwZ jegjwl" data-off="" data-on="" /> <span class="sc-fhYwyz jdgzKk" /> </label> </div> </div> </div> </div> <div class="sc-dznXNo epBKIx" title="Wallet Info" > <div class="sc-drlKqa gzObdq" title="Balance in XEC" > 9,513.12 tXEC </div> <div class="sc-bIqbHp eQIbJZ" title="Balance in Local Currency" > $ 0.29 USD </div> <p class="sc-jxGEyO dzLOSG" title="Price in Local Currency" > 1 tXEC = 0.00003000 USD </p> </div> <div class="sc-iuDHTM bRkhcV" > <div class="sc-VJcYb Uszwj" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gYUTVy" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle Multisend" name="Toggle Multisend" title="Toggle Multisend" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle Multisend" > <span class="sc-gFaPwZ hktLQl" data-off="Send to one" data-on="Send to many" /> <span class="sc-fhYwyz cnLmNg" /> </label> </div> </div> </div> <div class="sc-jtggT cVUzSi" > <div class="sc-ipZHIp jSDPgp" > <div class="sc-bmyXtO fetwxd" > <div class="sc-dEoRIm bvGLHm" > <div class="sc-gGBfsJ bcyGFW" > <div class="sc-jnlKLf iMOzHB" > <input class="sc-fYxtnH sc-ktHwxA dxPESR" disabled="" name="address" placeholder="Address" value="ecash:qp33mh3a7qq7p8yulhnvwty2uq5ynukqcvuxmvzfhm" /> <button class="sc-jqCOkK hZNrJH" title="Scan QR Code" > <svg /> </button> </div> <div class="sc-lhVmIH kOeoRj" /> </div> <div class="sc-hmXxxW frxJjy" > <a class="sc-iuJeZd ncRQs" href="https://explorer.e.cash/address/false" rel="noreferrer" target="_blank" /> </div> </div> <div class="sc-gGBfsJ bcyGFW" > <div class="sc-jnlKLf iMOzHB" > <input class="sc-fYxtnH sc-ktHwxA ekzRpS" name="amount" placeholder="Amount" step="0.01" type="number" value="" /> <select class="sc-iELTvK sc-cmTdod iEdEXA" data-testid="currency-select-dropdown" disabled="" > <option class="sc-btzYZH dfuDxf" data-testid="xec-option" value="XEC" > XEC </option> <option class="sc-btzYZH dfuDxf" data-testid="fiat-option" value="USD" > USD </option> </select> <button class="sc-cIShpX bOdRSs" > max </button> </div> <div class="sc-lhVmIH kOeoRj" /> </div> </div> </div> <div class="sc-iGrrsa jIFmiZ" > <div class="sc-gGBfsJ bcyGFW" > <textarea class="sc-hEsumM kttucH" height="142" name="multiAddressInput" placeholder="One address & amount per line, separated by comma e.g. ecash:qpatql05s9jfavnu0tv6lkjjk25n6tmj9gkpyrlwu8,500 ecash:qzvydd4n3lm3xv62cx078nu9rg0e3srmqq0knykfed,700" /> <div class="sc-kTUwUJ inNpAB" > <div class="sc-dqBHgY foXbGf" /> </div> </div> </div> </div> <div class="sc-jVODtj iheIHG" > <div class="sc-kUaPvJ gjMMZr" > <div class="sc-giadOv cbmuSd" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo bckJer" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle Cashtab Msg" name="Toggle Cashtab Msg" title="Toggle Cashtab Msg" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle Cashtab Msg" > <span class="sc-gFaPwZ hktLQl" data-off="✉️" data-on="✉️" /> <span class="sc-fhYwyz dqlgzj" /> </label> </div> </div> <div class="sc-fONwsr dGcugg" > Cashtab Msg </div> </div> </div> <div class="sc-kUaPvJ gjMMZr" > <div class="sc-giadOv cbmuSd" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo bckJer" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle op_return_raw" name="Toggle op_return_raw" title="Toggle op_return_raw" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle op_return_raw" > <span class="sc-gFaPwZ hktLQl" data-off="" data-on="" /> <span class="sc-fhYwyz dqlgzj" /> </label> </div> </div> <div class="sc-fONwsr dGcugg" > op_return_raw </div> </div> </div> </div> <div class="sc-cqCuEk fZNZTU" > <div class="sc-iqzUVk cugiDL" > 0 tXEC </div> <div class="sc-hMFtBS hcwxtD" > = $ 0.00 USD </div> </div> <button class="sc-bwCtUz sc-eTuwsz OqSfl" disabled="" style="margin-top: 12px;" > Send </button> </div> </div> <div class="sc-yZwTr cWMKbM" > <button class="sc-FQuPU doSOrh" > <svg /> </button> <button aria-label="Send Screen" class="sc-FQuPU eSnnLf" style="padding-bottom: 10px;" > <div class="sc-iwsKbI cuDgAv" > <svg title="tx-sent" /> </div> </button> <button aria-label="Tokens" class="sc-FQuPU doSOrh" > <svg title="Tokens" /> </button> <button aria-label="Receive" class="sc-FQuPU doSOrh" > <svg title="tx-received" /> </button> <div class="sc-fjhmcy jOtBOs" title="Show Other Screens" > <span class="sc-hwcHae jiKkID" /> <div class="sc-lnmtFM dXSWsQ" title="Other Screens" > <button class="sc-erNlkL jUqjSc" > <p> Wallet Backup </p> <svg title="wallet" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Wallets </p> <svg title="wallets" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Listed NFTs </p> <svg title="NFT" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Contacts </p> <svg title="Contact List" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Airdrop </p> <svg title="tx-airdrop" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Rewards </p> <svg title="Cashtab Rewards" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Swap </p> <svg title="swap" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Sign & Verify </p> <svg class="sc-htpNat bPFBeM" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Settings </p> <svg title="settings" /> </button> </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.findByText (/work/cashtab/src/components/Send/__tests__/SendByUrlParams.test.js:240:29) ====== CashTab Unit Tests: <SendXec /> rendered with params in URL Legacy params. Address field is populated + disabled while value field is empty + enabled if legacy url params have address defined and no value key present ====== Error: Unable to find an element with the text: 9,513.12 XEC. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style <body> <div> <div class="sc-dEfkYy gCfMiu" > <div class="Toastify" /> <div class="sc-cqPOvA clVrIX" > <div class="sc-gNJABI jWsBXr" > <div class="sc-kEmuub hIthwo" > <img alt="cashtab" class="sc-bbkauy jKzBhk" src="test-file-stub" /> </div> <div class="sc-eNNmBn edTXfc" > <select class="sc-eEieub iBVdYg" data-testid="wallet-select" id="wallets" name="wallets" > <option class="sc-RbTVP hMcPpG" value="Transaction Fixtures" > Transaction Fixtures </option> </select> <div class="sc-eopZyb iDutwN" > <button aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g" class="sc-iQNlJl dQNUoI" > <svg title="copy-paste" /> </button> <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gyYfmt" > <input checked="" class="sc-jzgbtB jgfSAg" id="show-hide-balance" name="show-hide-balance" title="show-hide-balance" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="show-hide-balance" > <span class="sc-gFaPwZ jegjwl" data-off="" data-on="" /> <span class="sc-fhYwyz jdgzKk" /> </label> </div> </div> </div> </div> <div class="sc-dznXNo epBKIx" title="Wallet Info" > <div class="sc-drlKqa gzObdq" title="Balance in XEC" > 9,513.12 tXEC </div> <div class="sc-bIqbHp eQIbJZ" title="Balance in Local Currency" > $ 0.29 USD </div> <p class="sc-jxGEyO dzLOSG" title="Price in Local Currency" > 1 tXEC = 0.00003000 USD </p> </div> <div class="sc-iuDHTM bRkhcV" > <div class="sc-VJcYb Uszwj" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gYUTVy" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle Multisend" name="Toggle Multisend" title="Toggle Multisend" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle Multisend" > <span class="sc-gFaPwZ hktLQl" data-off="Send to one" data-on="Send to many" /> <span class="sc-fhYwyz cnLmNg" /> </label> </div> </div> </div> <div class="sc-jtggT cVUzSi" > <div class="sc-ipZHIp jSDPgp" > <div class="sc-bmyXtO fetwxd" > <div class="sc-dEoRIm bvGLHm" > <div class="sc-gGBfsJ bcyGFW" > <div class="sc-jnlKLf iMOzHB" > <input class="sc-fYxtnH sc-ktHwxA dxPESR" disabled="" name="address" placeholder="Address" value="ecash:qp33mh3a7qq7p8yulhnvwty2uq5ynukqcvuxmvzfhm" /> <button class="sc-jqCOkK hZNrJH" title="Scan QR Code" > <svg /> </button> </div> <div class="sc-lhVmIH kOeoRj" /> </div> <div class="sc-hmXxxW frxJjy" > <a class="sc-iuJeZd ncRQs" href="https://explorer.e.cash/address/false" rel="noreferrer" target="_blank" /> </div> </div> <div class="sc-gGBfsJ bcyGFW" > <div class="sc-jnlKLf iMOzHB" > <input class="sc-fYxtnH sc-ktHwxA ekzRpS" name="amount" placeholder="Amount" step="0.01" type="number" value="" /> <select class="sc-iELTvK sc-cmTdod iEdEXA" data-testid="currency-select-dropdown" disabled="" > <option class="sc-btzYZH dfuDxf" data-testid="xec-option" value="XEC" > XEC </option> <option class="sc-btzYZH dfuDxf" data-testid="fiat-option" value="USD" > USD </option> </select> <button class="sc-cIShpX bOdRSs" > max </button> </div> <div class="sc-lhVmIH kOeoRj" /> </div> </div> </div> <div class="sc-iGrrsa jIFmiZ" > <div class="sc-gGBfsJ bcyGFW" > <textarea class="sc-hEsumM kttucH" height="142" name="multiAddressInput" placeholder="One address & amount per line, separated by comma e.g. ecash:qpatql05s9jfavnu0tv6lkjjk25n6tmj9gkpyrlwu8,500 ecash:qzvydd4n3lm3xv62cx078nu9rg0e3srmqq0knykfed,700" /> <div class="sc-kTUwUJ inNpAB" > <div class="sc-dqBHgY foXbGf" /> </div> </div> </div> </div> <div class="sc-jVODtj iheIHG" > <div class="sc-kUaPvJ gjMMZr" > <div class="sc-giadOv cbmuSd" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo bckJer" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle Cashtab Msg" name="Toggle Cashtab Msg" title="Toggle Cashtab Msg" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle Cashtab Msg" > <span class="sc-gFaPwZ hktLQl" data-off="✉️" data-on="✉️" /> <span class="sc-fhYwyz dqlgzj" /> </label> </div> </div> <div class="sc-fONwsr dGcugg" > Cashtab Msg </div> </div> </div> <div class="sc-kUaPvJ gjMMZr" > <div class="sc-giadOv cbmuSd" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo bckJer" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle op_return_raw" name="Toggle op_return_raw" title="Toggle op_return_raw" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle op_return_raw" > <span class="sc-gFaPwZ hktLQl" data-off="" data-on="" /> <span class="sc-fhYwyz dqlgzj" /> </label> </div> </div> <div class="sc-fONwsr dGcugg" > op_return_raw </div> </div> </div> </div> <div class="sc-cqCuEk fZNZTU" > <div class="sc-iqzUVk cugiDL" > 0 tXEC </div> <div class="sc-hMFtBS hcwxtD" > = $ 0.00 USD </div> </div> <button class="sc-bwCtUz sc-eTuwsz OqSfl" disabled="" style="margin-top: 12px;" > Send </button> </div> </div> <div class="sc-yZwTr cWMKbM" > <button class="sc-FQuPU doSOrh" > <svg /> </button> <button aria-label="Send Screen" class="sc-FQuPU eSnnLf" style="padding-bottom: 10px;" > <div class="sc-iwsKbI cuDgAv" > <svg title="tx-sent" /> </div> </button> <button aria-label="Tokens" class="sc-FQuPU doSOrh" > <svg title="Tokens" /> </button> <button aria-label="Receive" class="sc-FQuPU doSOrh" > <svg title="tx-received" /> </button> <div class="sc-fjhmcy jOtBOs" title="Show Other Screens" > <span class="sc-hwcHae jiKkID" /> <div class="sc-lnmtFM dXSWsQ" title="Other Screens" > <button class="sc-erNlkL jUqjSc" > <p> Wallet Backup </p> <svg title="wallet" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Wallets </p> <svg title="wallets" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Listed NFTs </p> <svg title="NFT" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Contacts </p> <svg title="Contact List" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Airdrop </p> <svg title="tx-airdrop" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Rewards </p> <svg title="Cashtab Rewards" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Swap </p> <svg title="swap" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Sign & Verify </p> <svg class="sc-htpNat bPFBeM" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Settings </p> <svg title="settings" /> </button> </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.findByText (/work/cashtab/src/components/Send/__tests__/SendByUrlParams.test.js:303:29) at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:545:9) at processTimers (node:internal/timers:519:7) ====== CashTab Unit Tests: <SendXec /> rendered with params in URL Legacy params. Params are ignored if only value param is present ====== Error: expect(received).toHaveProperty(path, value) Expected path: "disabled" Expected value: false Received value: true at Object.toHaveProperty (/work/cashtab/src/components/Send/__tests__/SendByUrlParams.test.js:380:31) at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:545:9) at processTimers (node:internal/timers:519:7) ====== CashTab Unit Tests: <SendXec /> rendered with params in URL Legacy params. Params are ignored if param is duplicated ====== Error: expect(received).toHaveProperty(path, value) Expected path: "disabled" Expected value: false Received value: true at Object.toHaveProperty (/work/cashtab/src/components/Send/__tests__/SendByUrlParams.test.js:438:31) at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:545:9) at processTimers (node:internal/timers:519:7) ====== CashTab Unit Tests: <SendXec /> rendered with params in URL Legacy params are not parsed as bip21 even if the bip21 param appears in the string ====== Error: Unable to find an element with the text: 9,513.12 XEC. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style <body> <div> <div class="sc-dEfkYy gCfMiu" > <div class="Toastify" /> <div class="sc-cqPOvA clVrIX" > <div class="sc-gNJABI jWsBXr" > <div class="sc-kEmuub hIthwo" > <img alt="cashtab" class="sc-bbkauy jKzBhk" src="test-file-stub" /> </div> <div class="sc-eNNmBn edTXfc" > <select class="sc-eEieub iBVdYg" data-testid="wallet-select" id="wallets" name="wallets" > <option class="sc-RbTVP hMcPpG" value="Transaction Fixtures" > Transaction Fixtures </option> </select> <div class="sc-eopZyb iDutwN" > <button aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g" class="sc-iQNlJl dQNUoI" > <svg title="copy-paste" /> </button> <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gyYfmt" > <input checked="" class="sc-jzgbtB jgfSAg" id="show-hide-balance" name="show-hide-balance" title="show-hide-balance" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="show-hide-balance" > <span class="sc-gFaPwZ jegjwl" data-off="" data-on="" /> <span class="sc-fhYwyz jdgzKk" /> </label> </div> </div> </div> </div> <div class="sc-dznXNo epBKIx" title="Wallet Info" > <div class="sc-drlKqa gzObdq" title="Balance in XEC" > 9,513.12 tXEC </div> <div class="sc-bIqbHp eQIbJZ" title="Balance in Local Currency" > $ 0.29 USD </div> <p class="sc-jxGEyO dzLOSG" title="Price in Local Currency" > 1 tXEC = 0.00003000 USD </p> </div> <div class="sc-iuDHTM bRkhcV" > <div class="sc-VJcYb Uszwj" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gYUTVy" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle Multisend" name="Toggle Multisend" title="Toggle Multisend" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle Multisend" > <span class="sc-gFaPwZ hktLQl" data-off="Send to one" data-on="Send to many" /> <span class="sc-fhYwyz cnLmNg" /> </label> </div> </div> </div> <div class="sc-jtggT cVUzSi" > <div class="sc-ipZHIp jSDPgp" > <div class="sc-bmyXtO fetwxd" > <div class="sc-dEoRIm bvGLHm" > <div class="sc-gGBfsJ bcyGFW" > <div class="sc-jnlKLf iMOzHB" > <input class="sc-fYxtnH sc-ktHwxA dxPESR" disabled="" name="address" placeholder="Address" value="ecash:qp33mh3a7qq7p8yulhnvwty2uq5ynukqcvuxmvzfhm" /> <button class="sc-jqCOkK hZNrJH" title="Scan QR Code" > <svg /> </button> </div> <div class="sc-lhVmIH kOeoRj" /> </div> <div class="sc-hmXxxW frxJjy" > <a class="sc-iuJeZd ncRQs" href="https://explorer.e.cash/address/false" rel="noreferrer" target="_blank" /> </div> </div> <div class="sc-gGBfsJ bcyGFW" > <div class="sc-jnlKLf iMOzHB" > <input class="sc-fYxtnH sc-ktHwxA dxPESR" disabled="" name="amount" placeholder="Amount" step="0.01" type="number" value="500" /> <select class="sc-iELTvK sc-cmTdod iEdEXA" data-testid="currency-select-dropdown" disabled="" > <option class="sc-btzYZH dfuDxf" data-testid="xec-option" value="XEC" > XEC </option> <option class="sc-btzYZH dfuDxf" data-testid="fiat-option" value="USD" > USD </option> </select> <button class="sc-cIShpX gJZnWf" disabled="" > max </button> </div> <div class="sc-lhVmIH kOeoRj" /> </div> </div> </div> <div class="sc-iGrrsa jIFmiZ" > <div class="sc-gGBfsJ bcyGFW" > <textarea class="sc-hEsumM kttucH" height="142" name="multiAddressInput" placeholder="One address & amount per line, separated by comma e.g. ecash:qpatql05s9jfavnu0tv6lkjjk25n6tmj9gkpyrlwu8,500 ecash:qzvydd4n3lm3xv62cx078nu9rg0e3srmqq0knykfed,700" /> <div class="sc-kTUwUJ inNpAB" > <div class="sc-dqBHgY foXbGf" /> </div> </div> </div> </div> <div class="sc-jVODtj iheIHG" > <div class="sc-kUaPvJ gjMMZr" > <div class="sc-giadOv cbmuSd" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo bckJer" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle Cashtab Msg" name="Toggle Cashtab Msg" title="Toggle Cashtab Msg" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle Cashtab Msg" > <span class="sc-gFaPwZ hktLQl" data-off="✉️" data-on="✉️" /> <span class="sc-fhYwyz dqlgzj" /> </label> </div> </div> <div class="sc-fONwsr dGcugg" > Cashtab Msg </div> </div> </div> <div class="sc-kUaPvJ gjMMZr" > <div class="sc-giadOv cbmuSd" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo bckJer" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle op_return_raw" name="Toggle op_return_raw" title="Toggle op_return_raw" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle op_return_raw" > <span class="sc-gFaPwZ hktLQl" data-off="" data-on="" /> <span class="sc-fhYwyz dqlgzj" /> </label> </div> </div> <div class="sc-fONwsr dGcugg" > op_return_raw </div> </div> </div> </div> <div class="sc-cqCuEk fZNZTU" > <div class="sc-iqzUVk cugiDL" > 500 tXEC </div> <div class="sc-hMFtBS hcwxtD" > = $ 0.02 USD </div> </div> <button class="sc-bwCtUz sc-eTuwsz hBLfGp" style="margin-top: 12px;" > Send </button> </div> </div> <div class="sc-yZwTr cWMKbM" > <button class="sc-FQuPU doSOrh" > <svg /> </button> <button aria-label="Send Screen" class="sc-FQuPU eSnnLf" style="padding-bottom: 10px;" > <div class="sc-iwsKbI cuDgAv" > <svg title="tx-sent" /> </div> </button> <button aria-label="Tokens" class="sc-FQuPU doSOrh" > <svg title="Tokens" /> </button> <button aria-label="Receive" class="sc-FQuPU doSOrh" > <svg title="tx-received" /> </button> <div class="sc-fjhmcy jOtBOs" title="Show Other Screens" > <span class="sc-hwcHae jiKkID" /> <div class="sc-lnmtFM dXSWsQ" title="Other Screens" > <button class="sc-erNlkL jUqjSc" > <p> Wallet Backup </p> <svg title="wallet" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Wallets </p> <svg title="wallets" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Listed NFTs </p> <svg title="NFT" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Contacts </p> <svg title="Contact List" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Airdrop </p> <svg title="tx-airdrop" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Rewards </p> <svg title="Cashtab Rewards" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Swap </p> <svg title="swap" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Sign & Verify </p> <svg class="sc-htpNat bPFBeM" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Settings </p> <svg title="settings" /> </button> </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.findByText (/work/cashtab/src/components/Send/__tests__/SendByUrlParams.test.js:481:29) at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:545:9) at processTimers (node:internal/timers:519:7) ====== CashTab Unit Tests: <SendXec /> rendered with params in URL bip21 param - valid bip21 param with amount and op_return_raw is parsed as expected ====== Error: Unable to find an element with the text: 9,513.12 XEC. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style <body> <div> <div class="sc-dEfkYy gCfMiu" > <div class="Toastify" /> <div class="sc-cqPOvA clVrIX" > <div class="sc-gNJABI jWsBXr" > <div class="sc-kEmuub hIthwo" > <img alt="cashtab" class="sc-bbkauy jKzBhk" src="test-file-stub" /> </div> <div class="sc-eNNmBn edTXfc" > <select class="sc-eEieub iBVdYg" data-testid="wallet-select" id="wallets" name="wallets" > <option class="sc-RbTVP hMcPpG" value="Transaction Fixtures" > Transaction Fixtures </option> </select> <div class="sc-eopZyb iDutwN" > <button aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g" class="sc-iQNlJl dQNUoI" > <svg title="copy-paste" /> </button> <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gyYfmt" > <input checked="" class="sc-jzgbtB jgfSAg" id="show-hide-balance" name="show-hide-balance" title="show-hide-balance" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="show-hide-balance" > <span class="sc-gFaPwZ jegjwl" data-off="" data-on="" /> <span class="sc-fhYwyz jdgzKk" /> </label> </div> </div> </div> </div> <div class="sc-dznXNo epBKIx" title="Wallet Info" > <div class="sc-drlKqa gzObdq" title="Balance in XEC" > 9,513.12 tXEC </div> <div class="sc-bIqbHp eQIbJZ" title="Balance in Local Currency" > $ 0.29 USD </div> <p class="sc-jxGEyO dzLOSG" title="Price in Local Currency" > 1 tXEC = 0.00003000 USD </p> </div> <div class="sc-iuDHTM bRkhcV" > <div class="sc-VJcYb Uszwj" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gYUTVy" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle Multisend" name="Toggle Multisend" title="Toggle Multisend" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle Multisend" > <span class="sc-gFaPwZ hktLQl" data-off="Send to one" data-on="Send to many" /> <span class="sc-fhYwyz cnLmNg" /> </label> </div> </div> </div> <div class="sc-jtggT cVUzSi" > <div class="sc-ipZHIp jSDPgp" > <div class="sc-bmyXtO fetwxd" > <div class="sc-dEoRIm bvGLHm" > <div class="sc-gGBfsJ bcyGFW" > <div class="sc-jnlKLf iMOzHB" > <input class="sc-fYxtnH sc-ktHwxA dxPESR" disabled="" name="address" placeholder="Address" value="ecash:qp33mh3a7qq7p8yulhnvwty2uq5ynukqcvuxmvzfhm?amount=17&op_return_raw=04007461622263617368746162206d6573736167652077697468206f705f72657475726e5f726177" /> <button class="sc-jqCOkK hZNrJH" title="Scan QR Code" > <svg /> </button> </div> <div class="sc-lhVmIH kOeoRj" /> </div> <div class="sc-hmXxxW frxJjy" > <a class="sc-iuJeZd ncRQs" href="https://explorer.e.cash/address/false" rel="noreferrer" target="_blank" /> </div> </div> <div class="sc-gGBfsJ bcyGFW" > <div class="sc-jnlKLf iMOzHB" > <input class="sc-fYxtnH sc-ktHwxA dxPESR" disabled="" name="amount" placeholder="Amount" step="0.01" type="number" value="17" /> <select class="sc-iELTvK sc-cmTdod iEdEXA" data-testid="currency-select-dropdown" disabled="" > <option class="sc-btzYZH dfuDxf" data-testid="xec-option" value="XEC" > XEC </option> <option class="sc-btzYZH dfuDxf" data-testid="fiat-option" value="USD" > USD </option> </select> <button class="sc-cIShpX gJZnWf" disabled="" > max </button> </div> <div class="sc-lhVmIH kOeoRj" /> </div> </div> </div> <div class="sc-iGrrsa jIFmiZ" > <div class="sc-gGBfsJ bcyGFW" > <textarea class="sc-hEsumM kttucH" height="142" name="multiAddressInput" placeholder="One address & amount per line, separated by comma e.g. ecash:qpatql05s9jfavnu0tv6lkjjk25n6tmj9gkpyrlwu8,500 ecash:qzvydd4n3lm3xv62cx078nu9rg0e3srmqq0knykfed,700" /> <div class="sc-kTUwUJ inNpAB" > <div class="sc-dqBHgY foXbGf" /> </div> </div> </div> </div> <div class="sc-jVODtj iheIHG" > <div class="sc-kUaPvJ gjMMZr" > <div class="sc-giadOv cbmuSd" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo bckJer" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle Cashtab Msg" name="Toggle Cashtab Msg" title="Toggle Cashtab Msg" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle Cashtab Msg" > <span class="sc-gFaPwZ hktLQl" data-off="✉️" data-on="✉️" /> <span class="sc-fhYwyz dqlgzj" /> </label> </div> </div> <div class="sc-fONwsr dGcugg" > Cashtab Msg </div> </div> </div> <div class="sc-kUaPvJ gjMMZr" > <div class="sc-giadOv cbmuSd" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo bckJer" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle op_return_raw" name="Toggle op_return_raw" title="Toggle op_return_raw" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle op_return_raw" > <span class="sc-gFaPwZ hktLQl" data-off="" data-on="" /> <span class="sc-fhYwyz dqlgzj" /> </label> </div> </div> <div class="sc-fONwsr dGcugg" > op_return_raw </div> </div> </div> <div class="sc-kUaPvJ gjMMZr" > <div class="sc-gGBfsJ bcyGFW" > <textarea class="sc-hEsumM bOUBFR" disabled="" height="62" name="opReturnRaw" placeholder="(Advanced) Enter raw hex to be included with this transaction's OP_RETURN" > 04007461622263617368746162206d6573736167652077697468206f705f72657475726e5f726177 </textarea> <div class="sc-kTUwUJ inNpAB" > <div class="sc-dqBHgY foXbGf" /> <div class="sc-jtRfpW iVVeHD" > <span class="sc-elJkPf iBjHlf" > 80 </span> / 444 </div> </div> </div> </div> <div class="sc-kUaPvJ gjMMZr" > <div class="sc-dliRfk cnkbPi" > <div class="sc-kLIISr kQBvHS" > Parsed op_return_raw </div> <div class="sc-qrIAp exeZNt" > <b> Cashtab Msg </b> <br /> cashtab message with op_return_raw </div> </div> </div> </div> <div class="sc-cqCuEk fZNZTU" > <div class="sc-iqzUVk cugiDL" > 17 tXEC </div> <div class="sc-hMFtBS hcwxtD" > = $ 0.00 USD </div> </div> <button class="sc-bwCtUz sc-eTuwsz hBLfGp" style="margin-top: 12px;" > Send </button> </div> </div> <div class="sc-yZwTr cWMKbM" > <button class="sc-FQuPU doSOrh" > <svg /> </button> <button aria-label="Send Screen" class="sc-FQuPU eSnnLf" style="padding-bottom: 10px;" > <div class="sc-iwsKbI cuDgAv" > <svg title="tx-sent" /> </div> </button> <button aria-label="Tokens" class="sc-FQuPU doSOrh" > <svg title="Tokens" /> </button> <button aria-label="Receive" class="sc-FQuPU doSOrh" > <svg title="tx-received" /> </button> <div class="sc-fjhmcy jOtBOs" title="Show Other Screens" > <span class="sc-hwcHae jiKkID" /> <div class="sc-lnmtFM dXSWsQ" title="Other Screens" > <button class="sc-erNlkL jUqjSc" > <p> Wallet Backup </p> <svg title="wallet" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Wallets </p> <svg title="wallets" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Listed NFTs </p> <svg title="NFT" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Contacts </p> <svg title="Contact List" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Airdrop </p> <svg title="tx-airdrop" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Rewards </p> <svg title="Cashtab Rewards" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Swap </p> <svg title="swap" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Sign & Verify </p> <svg class="sc-htpNat bPFBeM" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Settings </p> <svg title="settings" /> </button> </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.findByText (/work/cashtab/src/components/Send/__tests__/SendByUrlParams.test.js:548:29) at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:545:9) at processTimers (node:internal/timers:519:7) ====== CashTab Unit Tests: <SendXec /> rendered with params in URL bip21 param - an invalid bip21 param shows validation errors but cannot be changed ====== Error: Unable to find an element with the text: 9,513.12 XEC. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style <body> <div> <div class="sc-dEfkYy gCfMiu" > <div class="Toastify" /> <div class="sc-cqPOvA clVrIX" > <div class="sc-gNJABI jWsBXr" > <div class="sc-kEmuub hIthwo" > <img alt="cashtab" class="sc-bbkauy jKzBhk" src="test-file-stub" /> </div> <div class="sc-eNNmBn edTXfc" > <select class="sc-eEieub iBVdYg" data-testid="wallet-select" id="wallets" name="wallets" > <option class="sc-RbTVP hMcPpG" value="Transaction Fixtures" > Transaction Fixtures </option> </select> <div class="sc-eopZyb iDutwN" > <button aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g" class="sc-iQNlJl dQNUoI" > <svg title="copy-paste" /> </button> <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gyYfmt" > <input checked="" class="sc-jzgbtB jgfSAg" id="show-hide-balance" name="show-hide-balance" title="show-hide-balance" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="show-hide-balance" > <span class="sc-gFaPwZ jegjwl" data-off="" data-on="" /> <span class="sc-fhYwyz jdgzKk" /> </label> </div> </div> </div> </div> <div class="sc-dznXNo epBKIx" title="Wallet Info" > <div class="sc-drlKqa gzObdq" title="Balance in XEC" > 9,513.12 tXEC </div> <div class="sc-bIqbHp eQIbJZ" title="Balance in Local Currency" > $ 0.29 USD </div> <p class="sc-jxGEyO dzLOSG" title="Price in Local Currency" > 1 tXEC = 0.00003000 USD </p> </div> <div class="sc-iuDHTM bRkhcV" > <div class="sc-VJcYb Uszwj" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gYUTVy" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle Multisend" name="Toggle Multisend" title="Toggle Multisend" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle Multisend" > <span class="sc-gFaPwZ hktLQl" data-off="Send to one" data-on="Send to many" /> <span class="sc-fhYwyz cnLmNg" /> </label> </div> </div> </div> <div class="sc-jtggT cVUzSi" > <div class="sc-ipZHIp jSDPgp" > <div class="sc-bmyXtO fetwxd" > <div class="sc-dEoRIm bvGLHm" > <div class="sc-gGBfsJ bcyGFW" > <div class="sc-jnlKLf EKHPD" > <input class="sc-fYxtnH sc-ktHwxA dxPESR" disabled="" name="address" placeholder="Address" value="ecash:qp33mh3a7qq7p8yulhnvwty2uq5ynukqcvuxmvzfhm?amount=17&op_return_raw=04007461622263617368746162206d6573736167652077697468206f705f72657475726e5f726177&op_return_raw=04007461622263617368746162206d6573736167652077697468206f705f72657475726e5f726177" /> <button class="sc-jqCOkK hZNrJH" title="Scan QR Code" > <svg /> </button> </div> <div class="sc-lhVmIH kOeoRj" > The op_return_raw param may not appear more than once </div> </div> <div class="sc-hmXxxW frxJjy" > <a class="sc-iuJeZd ncRQs" href="https://explorer.e.cash/address/false" rel="noreferrer" target="_blank" /> </div> </div> <div class="sc-gGBfsJ bcyGFW" > <div class="sc-jnlKLf iMOzHB" > <input class="sc-fYxtnH sc-ktHwxA dxPESR" disabled="" name="amount" placeholder="Amount" step="0.01" type="number" value="17" /> <select class="sc-iELTvK sc-cmTdod iEdEXA" data-testid="currency-select-dropdown" disabled="" > <option class="sc-btzYZH dfuDxf" data-testid="xec-option" value="XEC" > XEC </option> <option class="sc-btzYZH dfuDxf" data-testid="fiat-option" value="USD" > USD </option> </select> <button class="sc-cIShpX gJZnWf" disabled="" > max </button> </div> <div class="sc-lhVmIH kOeoRj" /> </div> </div> </div> <div class="sc-iGrrsa jIFmiZ" > <div class="sc-gGBfsJ bcyGFW" > <textarea class="sc-hEsumM kttucH" height="142" name="multiAddressInput" placeholder="One address & amount per line, separated by comma e.g. ecash:qpatql05s9jfavnu0tv6lkjjk25n6tmj9gkpyrlwu8,500 ecash:qzvydd4n3lm3xv62cx078nu9rg0e3srmqq0knykfed,700" /> <div class="sc-kTUwUJ inNpAB" > <div class="sc-dqBHgY foXbGf" /> </div> </div> </div> </div> <div class="sc-jVODtj iheIHG" > <div class="sc-kUaPvJ gjMMZr" > <div class="sc-giadOv cbmuSd" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo bckJer" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle Cashtab Msg" name="Toggle Cashtab Msg" title="Toggle Cashtab Msg" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle Cashtab Msg" > <span class="sc-gFaPwZ hktLQl" data-off="✉️" data-on="✉️" /> <span class="sc-fhYwyz dqlgzj" /> </label> </div> </div> <div class="sc-fONwsr dGcugg" > Cashtab Msg </div> </div> </div> <div class="sc-kUaPvJ gjMMZr" > <div class="sc-giadOv cbmuSd" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo bckJer" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle op_return_raw" name="Toggle op_return_raw" title="Toggle op_return_raw" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle op_return_raw" > <span class="sc-gFaPwZ hktLQl" data-off="" data-on="" /> <span class="sc-fhYwyz dqlgzj" /> </label> </div> </div> <div class="sc-fONwsr dGcugg" > op_return_raw </div> </div> </div> </div> <div class="sc-cqCuEk fZNZTU" > <div class="sc-iqzUVk cugiDL" > 17 tXEC </div> <div class="sc-hMFtBS hcwxtD" > = $ 0.00 USD </div> </div> <button class="sc-bwCtUz sc-eTuwsz OqSfl" disabled="" style="margin-top: 12px;" > Send </button> </div> </div> <div class="sc-yZwTr cWMKbM" > <button class="sc-FQuPU doSOrh" > <svg /> </button> <button aria-label="Send Screen" class="sc-FQuPU eSnnLf" style="padding-bottom: 10px;" > <div class="sc-iwsKbI cuDgAv" > <svg title="tx-sent" /> </div> </button> <button aria-label="Tokens" class="sc-FQuPU doSOrh" > <svg title="Tokens" /> </button> <button aria-label="Receive" class="sc-FQuPU doSOrh" > <svg title="tx-received" /> </button> <div class="sc-fjhmcy jOtBOs" title="Show Other Screens" > <span class="sc-hwcHae jiKkID" /> <div class="sc-lnmtFM dXSWsQ" title="Other Screens" > <button class="sc-erNlkL jUqjSc" > <p> Wallet Backup </p> <svg title="wallet" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Wallets </p> <svg title="wallets" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Listed NFTs </p> <svg title="NFT" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Contacts </p> <svg title="Contact List" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Airdrop </p> <svg title="tx-airdrop" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Rewards </p> <svg title="Cashtab Rewards" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Swap </p> <svg title="swap" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Sign & Verify </p> <svg class="sc-htpNat bPFBeM" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Settings </p> <svg title="settings" /> </button> </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.findByText (/work/cashtab/src/components/Send/__tests__/SendByUrlParams.test.js:657:29) at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:545:9) at processTimers (node:internal/timers:519:7) ====== CashTab Unit Tests: <SendXec /> rendered with params in URL No params. Send screen loads normally with no rendered input. ====== Error: expect(received).toHaveProperty(path, value) Expected path: "disabled" Expected value: false Received value: true at Object.toHaveProperty (/work/cashtab/src/components/Send/__tests__/SendByUrlParams.test.js:745:31) ====== CashTab Unit Tests: <SendXec /> rendered with params in URL bip21 param - valid bip21 param with amount, op_return_raw, and additional output with amount is parsed as expected ====== Error: Unable to find an element with the text: 9,513.12 XEC. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style <body> <div> <div class="sc-dEfkYy gCfMiu" > <div class="Toastify" /> <div class="sc-cqPOvA clVrIX" > <div class="sc-gNJABI jWsBXr" > <div class="sc-kEmuub hIthwo" > <img alt="cashtab" class="sc-bbkauy jKzBhk" src="test-file-stub" /> </div> <div class="sc-eNNmBn edTXfc" > <select class="sc-eEieub iBVdYg" data-testid="wallet-select" id="wallets" name="wallets" > <option class="sc-RbTVP hMcPpG" value="Transaction Fixtures" > Transaction Fixtures </option> </select> <div class="sc-eopZyb iDutwN" > <button aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g" class="sc-iQNlJl dQNUoI" > <svg title="copy-paste" /> </button> <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gyYfmt" > <input checked="" class="sc-jzgbtB jgfSAg" id="show-hide-balance" name="show-hide-balance" title="show-hide-balance" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="show-hide-balance" > <span class="sc-gFaPwZ jegjwl" data-off="" data-on="" /> <span class="sc-fhYwyz jdgzKk" /> </label> </div> </div> </div> </div> <div class="sc-dznXNo epBKIx" title="Wallet Info" > <div class="sc-drlKqa gzObdq" title="Balance in XEC" > 9,513.12 tXEC </div> <div class="sc-bIqbHp eQIbJZ" title="Balance in Local Currency" > $ 0.29 USD </div> <p class="sc-jxGEyO dzLOSG" title="Price in Local Currency" > 1 tXEC = 0.00003000 USD </p> </div> <div class="sc-iuDHTM bRkhcV" > <div class="sc-VJcYb Uszwj" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gYUTVy" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle Multisend" name="Toggle Multisend" title="Toggle Multisend" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle Multisend" > <span class="sc-gFaPwZ hktLQl" data-off="Send to one" data-on="Send to many" /> <span class="sc-fhYwyz cnLmNg" /> </label> </div> </div> </div> <div class="sc-jtggT cVUzSi" > <div class="sc-ipZHIp jSDPgp" > <div class="sc-bmyXtO fetwxd" > <div class="sc-dEoRIm bvGLHm" > <div class="sc-gGBfsJ bcyGFW" > <div class="sc-jnlKLf iMOzHB" > <input class="sc-fYxtnH sc-ktHwxA dxPESR" disabled="" name="address" placeholder="Address" value="ecash:qr6lws9uwmjkkaau4w956lugs9nlg9hudqs26lyxkv?amount=110&op_return_raw=0470617977202562dd05deda1c101b10562527bcd6bec20268fb94eed01843ba049cd774bec1&addr=ecash:qp4dxtmjlkc6upn29hh9pr2u8rlznwxeqqy0qkrjp5&amount=5.5" /> <button class="sc-jqCOkK hZNrJH" title="Scan QR Code" > <svg /> </button> </div> <div class="sc-lhVmIH kOeoRj" /> </div> <div class="sc-hmXxxW frxJjy" > <a class="sc-iuJeZd ncRQs" href="https://explorer.e.cash/address/false" rel="noreferrer" target="_blank" /> </div> </div> <div class="sc-bMVAic lexHOq" > <b> BIP21: Sending 115.50 XEC to 2 outputs </b> </div> </div> </div> <div class="sc-iGrrsa jIFmiZ" > <div class="sc-gGBfsJ bcyGFW" > <textarea class="sc-hEsumM kttucH" height="142" name="multiAddressInput" placeholder="One address & amount per line, separated by comma e.g. ecash:qpatql05s9jfavnu0tv6lkjjk25n6tmj9gkpyrlwu8,500 ecash:qzvydd4n3lm3xv62cx078nu9rg0e3srmqq0knykfed,700" /> <div class="sc-kTUwUJ inNpAB" > <div class="sc-dqBHgY foXbGf" /> </div> </div> </div> </div> <div class="sc-jVODtj iheIHG" > <div class="sc-kUaPvJ gjMMZr" > <div class="sc-giadOv cbmuSd" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo bckJer" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle Cashtab Msg" name="Toggle Cashtab Msg" title="Toggle Cashtab Msg" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle Cashtab Msg" > <span class="sc-gFaPwZ hktLQl" data-off="✉️" data-on="✉️" /> <span class="sc-fhYwyz dqlgzj" /> </label> </div> </div> <div class="sc-fONwsr dGcugg" > Cashtab Msg </div> </div> </div> <div class="sc-kUaPvJ gjMMZr" > <div class="sc-giadOv cbmuSd" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo bckJer" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle op_return_raw" name="Toggle op_return_raw" title="Toggle op_return_raw" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle op_return_raw" > <span class="sc-gFaPwZ hktLQl" data-off="" data-on="" /> <span class="sc-fhYwyz dqlgzj" /> </label> </div> </div> <div class="sc-fONwsr dGcugg" > op_return_raw </div> </div> </div> <div class="sc-kUaPvJ gjMMZr" > <div class="sc-gGBfsJ bcyGFW" > <textarea class="sc-hEsumM bOUBFR" disabled="" height="62" name="opReturnRaw" placeholder="(Advanced) Enter raw hex to be included with this transaction's OP_RETURN" > 0470617977202562dd05deda1c101b10562527bcd6bec20268fb94eed01843ba049cd774bec1 </textarea> <div class="sc-kTUwUJ inNpAB" > <div class="sc-dqBHgY foXbGf" /> <div class="sc-jtRfpW iVVeHD" > <span class="sc-elJkPf iBjHlf" > 76 </span> / 444 </div> </div> </div> </div> <div class="sc-kUaPvJ gjMMZr" > <div class="sc-dliRfk cnkbPi" > <div class="sc-kLIISr kQBvHS" > Parsed op_return_raw </div> <div class="sc-qrIAp exeZNt" > <b> Unknown Protocol </b> <br /> 0470617977202562dd05deda1c101b10562527bcd6bec20268fb94eed01843ba049cd774bec1 </div> </div> </div> <div class="sc-kUaPvJ gjMMZr" > <div class="sc-dliRfk cnkbPi" > <div class="sc-kLIISr kQBvHS" > Parsed BIP21 outputs </div> <div class="sc-qrIAp exeZNt" > <ol> <li title="ecash:qr6lws9uwmjkkaau4w956lugs9nlg9hudqs26lyxkv" > qr6lws...6lyxkv, 110.00 XEC </li> <li title="ecash:qp4dxtmjlkc6upn29hh9pr2u8rlznwxeqqy0qkrjp5" > qp4dxt...qkrjp5, 5.50 XEC </li> </ol> </div> </div> </div> </div> <div class="sc-cqCuEk fZNZTU" > <div class="sc-iqzUVk cugiDL" > 115.50 XEC </div> <div class="sc-hMFtBS hcwxtD" > = $ 0.00 USD </div> </div> <button class="sc-bwCtUz sc-eTuwsz hBLfGp" style="margin-top: 12px;" > Send </button> </div> </div> <div class="sc-yZwTr cWMKbM" > <button class="sc-FQuPU doSOrh" > <svg /> </button> <button aria-label="Send Screen" class="sc-FQuPU eSnnLf" style="padding-bottom: 10px;" > <div class="sc-iwsKbI cuDgAv" > <svg title="tx-sent" /> </div> </button> <button aria-label="Tokens" class="sc-FQuPU doSOrh" > <svg title="Tokens" /> </button> <button aria-label="Receive" class="sc-FQuPU doSOrh" > <svg title="tx-received" /> </button> <div class="sc-fjhmcy jOtBOs" title="Show Other Screens" > <span class="sc-hwcHae jiKkID" /> <div class="sc-lnmtFM dXSWsQ" title="Other Screens" > <button class="sc-erNlkL jUqjSc" > <p> Wallet Backup </p> <svg title="wallet" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Wallets </p> <svg title="wallets" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Listed NFTs </p> <svg title="NFT" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Contacts </p> <svg title="Contact List" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Airdrop </p> <svg title="tx-airdrop" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Rewards </p> <svg title="Cashtab Rewards" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Swap </p> <svg title="swap" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Sign & Verify </p> <svg class="sc-htpNat bPFBeM" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Settings </p> <svg title="settings" /> </button> </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.findByText (/work/cashtab/src/components/Send/__tests__/SendByUrlParams.test.js:794:29) at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:545:9) at processTimers (node:internal/timers:519:7) ====== CashTab Unit Tests: <BalanceHeader /> Renders the BalanceHeader component correctly with default locale en-US ====== Error: expect(element).toHaveTextContent() Expected element to have text content: 10,000,000.00 XEC Received: 10,000,000.00 tXEC at Object.toHaveTextContent (/work/cashtab/src/components/Common/__tests__/BalanceHeader.test.js:68:28) 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:95: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: <BalanceHeader /> Renders the BalanceHeader component correctly with fr-FR locale ====== Error: expect(element).toHaveTextContent() Expected element to have text content: 10 000 000,00 XEC Received: 10 000 000,00 tXEC at Object.toHaveTextContent (/work/cashtab/src/components/Common/__tests__/BalanceHeader.test.js:102:28) 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:95: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: <BalanceHeader /> Balance is hidden if cashtabSettings.balanceVisible is false ====== Error: expect(element).toHaveTextContent() Expected element to have text content: 10,000,000.00 XEC Received: 10,000,000.00 tXEC at Object.toHaveTextContent (/work/cashtab/src/components/Common/__tests__/BalanceHeader.test.js:135:28) 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:95: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: <BalanceHeader /> Renders fiat price for a non-USD currency ====== Error: expect(element).toHaveTextContent() Expected element to have text content: 10,000,000.00 XEC Received: 10,000,000.00 tXEC at Object.toHaveTextContent (/work/cashtab/src/components/Common/__tests__/BalanceHeader.test.js:168:28) 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:95: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: <BalanceHeader /> Fiat price and forex are not displayed if fiatPrice is unavailable ====== Error: expect(element).toHaveTextContent() Expected element to have text content: 10,000,000.00 XEC Received: 10,000,000.00 tXEC at Object.toHaveTextContent (/work/cashtab/src/components/Common/__tests__/BalanceHeader.test.js:199:28) 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:95: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: <Receive /> Renders as expected on desktop, including copy paste functionality of clicking on the QR code ====== Error: expect(element).toHaveTextContent() Expected element to have text content: Address Copied to Clipboardecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g Received: Address Copied to Clipboardectest:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cyt8ct2nve at Object.toHaveTextContent (/work/cashtab/src/components/Receive/__tests__/Receive.test.js:121:11) ====== CashTab Unit Tests: <Token /> available actions rendered We can list an SLP1 NFT ====== TestingLibraryElementError: Unable to find an element with the text: 10,000 XEC = $ 0.30 USD. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style <body> <div> <div class="sc-dEfkYy gCfMiu" > <div class="Toastify" /> <div class="sc-cqPOvA clVrIX" > <div class="sc-gNJABI jWsBXr" > <div class="sc-kEmuub hIthwo" > <img alt="cashtab" class="sc-bbkauy jKzBhk" src="test-file-stub" /> </div> <div class="sc-eNNmBn edTXfc" > <select class="sc-eEieub iBVdYg" data-testid="wallet-select" id="wallets" name="wallets" > <option class="sc-RbTVP hMcPpG" value="Token Test" > Token Test </option> </select> <div class="sc-eopZyb iDutwN" > <button aria-label="Copy ecash:qqq9f9z3uhpzkxrgdjkd7dxuuey7tmpmugpmnw0kue" class="sc-iQNlJl dQNUoI" > <svg title="copy-paste" /> </button> <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gyYfmt" > <input checked="" class="sc-jzgbtB jgfSAg" id="show-hide-balance" name="show-hide-balance" title="show-hide-balance" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="show-hide-balance" > <span class="sc-gFaPwZ jegjwl" data-off="" data-on="" /> <span class="sc-fhYwyz jdgzKk" /> </label> </div> </div> </div> </div> <div class="sc-dznXNo epBKIx" title="Wallet Info" > <div class="sc-drlKqa gzObdq" title="Balance in XEC" > 9,970.81 tXEC </div> <div class="sc-bIqbHp eQIbJZ" title="Balance in Local Currency" > $ 0.30 USD </div> <p class="sc-jxGEyO dzLOSG" title="Price in Local Currency" > 1 tXEC = 0.00003000 USD </p> </div> <div class="sc-iuDHTM bRkhcV" > <div class="sc-gtfDJT gKyNcC" > Gordon Chen </div> <div class="sc-fOICqy kHAmOU" > NFT from collection " <a href="/token/12a049d0da64652b4e8db68b6052ad0cda43cf0269190fe81040bed65ca926a3" > The Four Half-Coins of Jin-qua </a> " </div> <div class="sc-kxynE deMZBm" title="Token Stats" > <div class="sc-fcdeBU iqlXjQ" > <button class="sc-LKuAh dQHtoR" > <img alt="icon for 5d9bff67b99e3f93c245a2d832ae40b67f39b79e5cf1daefe97fe6a8a2228326" height="128" src="https://icons.etokens.cash/128/5d9bff67b99e3f93c245a2d832ae40b67f39b79e5cf1daefe97fe6a8a2228326.png" width="128" /> </button> </div> <div class="sc-fcdeBU iqlXjQ" > <div class="sc-kZmsYB joHLNk" > <div class="sc-RcBXQ iwzQZV" > Type: </div> <div class="sc-fcdeBU iqlXjQ" > <div class="sc-kaNhvL kqQDxA" > NFT <button aria-label="Click for more info about this token type" class="sc-iQNlJl dQNUoI" > <svg title="More Info" /> </button> </div> </div> </div> <div class="sc-kZmsYB joHLNk" > <div class="sc-RcBXQ iwzQZV" > Token Id: </div> <div class="sc-fcdeBU iqlXjQ" > <a href="https://explorer.e.cash/tx/5d9bff67b99e3f93c245a2d832ae40b67f39b79e5cf1daefe97fe6a8a2228326" rel="noopener noreferrer" target="_blank" > 5d9 ... 326 </a> </div> <div class="sc-fcdeBU iqlXjQ" > <button class="sc-iQNlJl dQNUoI" > <svg title="copy-paste" /> </button> </div> </div> <div class="sc-kZmsYB joHLNk" > <div class="sc-RcBXQ iwzQZV" > url: </div> <div class="sc-fcdeBU sc-gmeYpB hLUTmJ" > <a href="https://en.wikipedia.org/wiki/Tai-Pan_(novel)" rel="noreferrer" target="_blank" > en.wikipedia.org/wiki/Tai-Pan_(novel) </a> </div> </div> <div class="sc-kZmsYB joHLNk" > <div class="sc-RcBXQ iwzQZV" > created: </div> <div class="sc-fcdeBU iqlXjQ" > Apr 23, 2024 </div> </div> <div class="sc-kZmsYB joHLNk" > <div class="sc-RcBXQ iwzQZV" > hash: </div> <div class="sc-fcdeBU iqlXjQ" > 824 ... d72 </div> <div class="sc-fcdeBU iqlXjQ" > <button class="sc-iQNlJl dQNUoI" > <svg title="copy-paste" /> </button> </div> </div> </div> </div> <div class="sc-iBEsjs chAytb" title="Token Actions" > <div class="sc-iSDuPN iLaLMx" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo bckJer" > <input class="sc-jzgbtB jgfSAg" id="Toggle Sell" name="Toggle Sell" title="Toggle Sell" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="Toggle Sell" > <span class="sc-gFaPwZ hktLQl" data-off="💰" data-on="💰" /> <span class="sc-fhYwyz dqlgzj" /> </label> </div> </div> <div class="sc-gqPbQI czjmLG" > Sell Gordon Chen ( GC ) </div> </div> <div class="sc-hzNEM iLRvPI" > <div class="sc-chbbiW VTPXH" > <div class="sc-gGBfsJ bcyGFW" > <div class="sc-jnlKLf iMOzHB" > <input class="sc-fYxtnH sc-ktHwxA ekzRpS" name="nftListPrice" placeholder="Enter NFT list price" type="number" value="" /> <select class="sc-iELTvK sc-jwKygS cyDgpY" data-testid="currency-select-dropdown" > <option class="sc-btzYZH dfuDxf" data-testid="xec-option" value="XEC" > XEC </option> <option class="sc-btzYZH dfuDxf" data-testid="fiat-option" value="USD" > USD </option> </select> </div> <div class="sc-lhVmIH kOeoRj" /> </div> </div> </div> <div class="sc-hzDEsm gnqsOZ" title="NFT List Price" > $ 10,000 USD = 333,333,333.33 XEC </div> <div class="sc-hzNEM iLRvPI" > <button class="sc-bwCtUz sc-eTuwsz hBLfGp" style="margin-top: 12px;" > List Gordon Chen </button> </div> <div class="sc-iSDuPN iLaLMx" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo bckJer" > <input checked="" class="sc-jzgbtB jgfSAg" id="Toggle Send" name="Toggle Send" title="Toggle Send" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="Toggle Send" > <span class="sc-gFaPwZ hktLQl" data-off="➡️" data-on="➡️" /> <span class="sc-fhYwyz dqlgzj" /> </label> </div> </div> <div class="sc-gqPbQI czjmLG" > Send Gordon Chen ( GC ) </div> </div> </div> </div> </div> <div class="sc-yZwTr cWMKbM" > <button class="sc-FQuPU doSOrh" > <svg /> </button> <button aria-label="Send Screen" class="sc-FQuPU doSOrh" style="padding-bottom: 10px;" > <div class="sc-iwsKbI cuDgAv" > <svg title="tx-sent" /> </div> </button> <button aria-label="Tokens" class="sc-FQuPU doSOrh" > <svg title="Tokens" /> </button> <button aria-label="Receive" class="sc-FQuPU doSOrh" > <svg title="tx-received" /> </button> <div class="sc-fjhmcy jOtBOs" title="Show Other Screens" > <span class="sc-hwcHae jiKkID" /> <div class="sc-lnmtFM dXSWsQ" title="Other Screens" > <button class="sc-erNlkL jUqjSc" > <p> Wallet Backup </p> <svg title="wallet" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Wallets </p> <svg title="wallets" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Listed NFTs </p> <svg title="NFT" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Contacts </p> <svg title="Contact List" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Airdrop </p> <svg title="tx-airdrop" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Rewards </p> <svg title="Cashtab Rewards" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Swap </p> <svg title="swap" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Sign & Verify </p> <svg class="sc-htpNat bPFBeM" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Settings </p> <svg title="settings" /> </button> </div> </div> </div> </div> </div> </div> </body> at Object.getElementError (/work/cashtab/node_modules/@testing-library/dom/dist/config.js:37:19) at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:76:38 at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:52:17 at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:95:19 at Object.getByText (/work/cashtab/src/components/Etokens/__tests__/TokenActions.test.js:777:23) ====== CashTab Unit Tests: <CreateToken /> If wallet has insufficient XEC, renders component but does not render CreateTokenForm ====== Error: Unable to find an element with the text: 0.00 XEC. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style <body> <div> <div class="sc-dEfkYy gCfMiu" > <div class="Toastify" /> <div class="sc-cqPOvA clVrIX" > <div class="sc-gNJABI jWsBXr" > <div class="sc-kEmuub hIthwo" > <img alt="cashtab" class="sc-bbkauy jKzBhk" src="test-file-stub" /> </div> <div class="sc-eNNmBn edTXfc" > <select class="sc-eEieub iBVdYg" data-testid="wallet-select" id="wallets" name="wallets" > <option class="sc-RbTVP hMcPpG" value="Transaction Fixtures" > Transaction Fixtures </option> </select> <div class="sc-eopZyb iDutwN" > <button aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g" class="sc-iQNlJl dQNUoI" > <svg title="copy-paste" /> </button> <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gyYfmt" > <input checked="" class="sc-jzgbtB jgfSAg" id="show-hide-balance" name="show-hide-balance" title="show-hide-balance" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="show-hide-balance" > <span class="sc-gFaPwZ jegjwl" data-off="" data-on="" /> <span class="sc-fhYwyz jdgzKk" /> </label> </div> </div> </div> </div> <div class="sc-dznXNo epBKIx" title="Wallet Info" > <div class="sc-drlKqa gzObdq" title="Balance in XEC" > 0.00 tXEC </div> <div class="sc-bIqbHp eQIbJZ" title="Balance in Local Currency" > $ 0.00 USD </div> <p class="sc-jxGEyO dzLOSG" title="Price in Local Currency" > 1 tXEC = 0.00003000 USD </p> </div> <div class="sc-iuDHTM bRkhcV" > <p class="sc-cmthru gYAoqp" > You need at least 5.46 spendable tXEC ($0.0002 USD) to create a token </p> </div> </div> <div class="sc-yZwTr cWMKbM" > <button class="sc-FQuPU doSOrh" > <svg /> </button> <button aria-label="Send Screen" class="sc-FQuPU doSOrh" style="padding-bottom: 10px;" > <div class="sc-iwsKbI cuDgAv" > <svg title="tx-sent" /> </div> </button> <button aria-label="Tokens" class="sc-FQuPU doSOrh" > <svg title="Tokens" /> </button> <button aria-label="Receive" class="sc-FQuPU doSOrh" > <svg title="tx-received" /> </button> <div class="sc-fjhmcy jOtBOs" title="Show Other Screens" > <span class="sc-hwcHae jiKkID" /> <div class="sc-lnmtFM dXSWsQ" title="Other Screens" > <button class="sc-erNlkL jUqjSc" > <p> Wallet Backup </p> <svg title="wallet" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Wallets </p> <svg title="wallets" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Listed NFTs </p> <svg title="NFT" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Contacts </p> <svg title="Contact List" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Airdrop </p> <svg title="tx-airdrop" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Rewards </p> <svg title="Cashtab Rewards" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Swap </p> <svg title="swap" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Sign & Verify </p> <svg class="sc-htpNat bPFBeM" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Settings </p> <svg title="settings" /> </button> </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.findByText (/work/cashtab/src/components/Etokens/__tests__/CreateToken.test.js:127:29) ====== CashTab Unit Tests: <CashtabTestWrapper /> With default props, renders App component ====== Error: Unable to find an element with the text: 9,513.12 XEC. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style <body> <div> <div class="sc-dEfkYy gCfMiu" > <div class="Toastify" /> <div class="sc-cqPOvA clVrIX" > <div class="sc-gNJABI jWsBXr" > <div class="sc-kEmuub hIthwo" > <img alt="cashtab" class="sc-bbkauy jKzBhk" src="test-file-stub" /> </div> <div class="sc-eNNmBn edTXfc" > <select class="sc-eEieub iBVdYg" data-testid="wallet-select" id="wallets" name="wallets" > <option class="sc-RbTVP hMcPpG" value="Transaction Fixtures" > Transaction Fixtures </option> </select> <div class="sc-eopZyb iDutwN" > <button aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g" class="sc-iQNlJl dQNUoI" > <svg title="copy-paste" /> </button> <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gyYfmt" > <input checked="" class="sc-jzgbtB jgfSAg" id="show-hide-balance" name="show-hide-balance" title="show-hide-balance" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="show-hide-balance" > <span class="sc-gFaPwZ jegjwl" data-off="" data-on="" /> <span class="sc-fhYwyz jdgzKk" /> </label> </div> </div> </div> </div> <div class="sc-dznXNo epBKIx" title="Wallet Info" > <div class="sc-drlKqa gzObdq" title="Balance in XEC" > 9,513.12 tXEC </div> <div class="sc-bIqbHp eQIbJZ" title="Balance in Local Currency" > $ 0.29 USD </div> <p class="sc-jxGEyO dzLOSG" title="Price in Local Currency" > 1 tXEC = 0.00003000 USD </p> </div> <div class="sc-iuDHTM bRkhcV" > <div class="sc-fOKMvo bHWHi" data-testid="tx-history" > <div class="sc-kGXeez dgJWRP" > <div class="sc-kpOJdX jTrDqc" > <div class="sc-dxgOiQ ePtNdN" type="Received" > <div class="sc-ckVGcZ kdsepy" > <svg title="tx-received" /> <div class="sc-eNQAEJ hezDIi" > <div class="sc-kEYyzF fVmxRF" > <div class="sc-hMqMXs eMcfen" > Received from <a class="sc-gipzik ORDkV" href="https://explorer.e.cash/address/ecash:qp89xgjhcqdnzzemts0aj378nfe2mhu9yvxj9nhgg6" rel="noreferrer" target="_blank" > qp8...gg6 </a> </div> <div class="sc-kAzzGY gDpRAi" title="Loading" > <div /> <div /> <div /> <div /> </div> </div> ... 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.findByText (/work/cashtab/src/components/App/fixtures/__tests__/CashtabTestWrapper.test.js:93:29) at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:545:9) at processTimers (node:internal/timers:519:7) ====== CashTab Unit Tests: <Configure /> Setting "Send Confirmations" settings will show send confirmations ====== Error: Unable to find an element with the text: Send 55 XEC to ecash:qphlhe78677sz227k83hrh542qeehh8el5lcjwk72y. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style <body> <div> <div class="sc-dEfkYy gCfMiu" > <div class="Toastify" /> <div class="sc-cqPOvA clVrIX" > <div class="sc-gNJABI jWsBXr" > <div class="sc-kEmuub hIthwo" > <img alt="cashtab" class="sc-bbkauy jKzBhk" src="test-file-stub" /> </div> <div class="sc-eNNmBn edTXfc" > <select class="sc-eEieub iBVdYg" data-testid="wallet-select" id="wallets" name="wallets" > <option class="sc-RbTVP hMcPpG" value="Transaction Fixtures" > Transaction Fixtures </option> </select> <div class="sc-eopZyb iDutwN" > <button aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g" class="sc-iQNlJl dQNUoI" > <svg title="copy-paste" /> </button> <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gyYfmt" > <input checked="" class="sc-jzgbtB jgfSAg" id="show-hide-balance" name="show-hide-balance" title="show-hide-balance" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="show-hide-balance" > <span class="sc-gFaPwZ jegjwl" data-off="" data-on="" /> <span class="sc-fhYwyz jdgzKk" /> </label> </div> </div> </div> </div> <div class="sc-dznXNo epBKIx" title="Wallet Info" > <div class="sc-drlKqa gzObdq" title="Balance in XEC" > 9,513.12 tXEC </div> <div class="sc-bIqbHp eQIbJZ" title="Balance in Local Currency" > $ 0.29 USD </div> <p class="sc-jxGEyO dzLOSG" title="Price in Local Currency" > 1 tXEC = 0.00003000 USD </p> </div> <div class="sc-iuDHTM bRkhcV" > <div class="sc-TOsTZ htVLSY" height="210" width="320" > <button class="sc-jbKcbu icFaFo" > X </button> <div class="sc-cJSrbW lhZADX" height="210" > <div class="sc-kgAjT pOjUU" > Confirm Send </div> <div class="sc-ksYbfQ hqAlCi" > Send 55 tXEC to ecash:qphlhe78677sz227k83hrh542qeehh8el5lcjwk72y </div> </div> <div class="sc-hmzhuo kGZSNO" > <button class="sc-frDJqD sc-kvZOFW hqFdLP" > OK </button> <button class="sc-frDJqD sc-hqyNC jiWVmp" > Cancel </button> </div> </div> <div class="sc-dNLxif fgSFMj" /> <div class="sc-VJcYb Uszwj" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gYUTVy" > <input class="sc-jzgbtB jgfSAg" id="Toggle Multisend" name="Toggle Multisend" title="Toggle Multisend" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="Toggle Multisend" > <span class="sc-gFaPwZ hktLQl" data-off="Send to one" data-on="Send to many" /> <span class="sc-fhYwyz cnLmNg" /> </label> </div> </div> </div> <div class="sc-jtggT cVUzSi" > <div class="sc-ipZHIp jSDPgp" > <div class="sc-bmyXtO fetwxd" > <div class="sc-dEoRIm bvGLHm" > <div class="sc-gGBfsJ bcyGFW" > <div class="sc-jnlKLf iMOzHB" > <input class="sc-fYxtnH sc-ktHwxA ekzRpS" name="address" placeholder="Address" value="ecash:qphlhe78677sz227k83hrh542qeehh8el5lcjwk72y" /> <button class="sc-jqCOkK hZNrJH" title="Scan QR Code" > <svg /> </button> </div> <div class="sc-lhVmIH kOeoRj" /> </div> <div class="sc-hmXxxW frxJjy" > <a class="sc-iuJeZd ncRQs" href="https://explorer.e.cash/address/false" rel="noreferrer" target="_blank" /> </div> </div> <div class="sc-gGBfsJ bcyGFW" > <div class="sc-jnlKLf iMOzHB" > <input class="sc-fYxtnH sc-ktHwxA ekzRpS" name="amount" placeholder="Amount" step="0.01" type="number" value="55" /> <select class="sc-iELTvK sc-cmTdod jhSain" data-testid="currency-select-dropdown" > <option class="sc-btzYZH dfuDxf" data-testid="xec-option" value="XEC" > XEC </option> <option class="sc-btzYZH dfuDxf" data-testid="fiat-option" value="USD" > USD </option> </select> <button class="sc-cIShpX bOdRSs" > max </button> </div> <div class="sc-lhVmIH kOeoRj" /> </div> </div> </div> <div class="sc-iGrrsa jIFmiZ" > <div class="sc-gGBfsJ bcyGFW" > <textarea class="sc-hEsumM kttucH" height="142" name="multiAddressInput" placeholder="One address & amount per line, separated by comma e.g. ecash:qpatql05s9jfavnu0tv6lkjjk25n6tmj9gkpyrlwu8,500 ecash:qzvydd4n3lm3xv62cx078nu9rg0e3srmqq0knykfed,700" /> <div class="sc-kTUwUJ inNpAB" > <div class="sc-dqBHgY foXbGf" /> </div> </div> </div> </div> <div class="sc-jVODtj iheIHG" > <div class="sc-kUaPvJ gjMMZr" > <div class="sc-giadOv cbmuSd" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo bckJer" > <input class="sc-jzgbtB jgfSAg" id="Toggle Cashtab Msg" name="Toggle Cashtab Msg" title="Toggle Cashtab Msg" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="Toggle Cashtab Msg" > <span class="sc-gFaPwZ hktLQl" data-off="✉️" data-on="✉️" /> <span class="sc-fhYwyz dqlgzj" /> </label> </div> </div> <div class="sc-fONwsr dGcugg" > Cashtab Msg </div> </div> </div> <div class="sc-kUaPvJ gjMMZr" > <div class="sc-giadOv cbmuSd" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo bckJer" > <input class="sc-jzgbtB jgfSAg" id="Toggle op_return_raw" name="Toggle op_return_raw" title="Toggle op_return_raw" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="Toggle op_return_raw" > <span class="sc-gFaPwZ hktLQl" data-off="" data-on="" /> <span class="sc-fhYwyz dqlgzj" /> </label> </div> </div> <div class="sc-fONwsr dGcugg" > op_return_raw </div> </div> </div> </div> <div class="sc-cqCuEk fZNZTU" > <div class="sc-iqzUVk cugiDL" > 55 tXEC </div> <div class="sc-hMFtBS hcwxtD" > = $ 0.00 USD </div> </div> <button class="sc-bwCtUz sc-eTuwsz hBLfGp" style="margin-top: 12px;" > Send </button> </div> </div> <div class="sc-yZwTr cWMKbM" > <button class="sc-FQuPU doSOrh" > <svg /> </button> <button aria-label="Send Screen" class="sc-FQuPU eSnnLf" style="padding-bottom: 10px;" > <div class="sc-iwsKbI cuDgAv" > <svg title="tx-sent" /> </div> </button> <button aria-label="Tokens" class="sc-FQuPU doSOrh" > <svg title="Tokens" /> </button> <button aria-label="Receive" class="sc-FQuPU doSOrh" > <svg title="tx-received" /> </button> <div class="sc-fjhmcy jOtBOs" title="Show Other Screens" > <span class="sc-hwcHae jiKkID" /> <div class="sc-lnmtFM dXSWsQ" title="Other Screens" > <button class="sc-erNlkL jUqjSc" > <p> Wallet Backup </p> <svg title="wallet" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Wallets </p> <svg title="wallets" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Listed NFTs </p> <svg title="NFT" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Contacts </p> <svg title="Contact List" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Airdrop </p> <svg title="tx-airdrop" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Rewards </p> <svg title="Cashtab Rewards" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Swap </p> <svg title="swap" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Sign & Verify </p> <svg class="sc-htpNat bPFBeM" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Settings </p> <svg title="settings" /> </button> </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.findByText (/work/cashtab/src/components/Configure/__tests__/Configure.test.js:222:26) ====== CashTab Unit Tests: <Configure /> "ABSOLUTE MINIMUM fees" setting is available and effective if wallet holds exactly required balance of Cachet ====== Error: Unable to find an element with the text: eCash sent. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style <body> <div> <div class="sc-dEfkYy gCfMiu" > <div class="Toastify" > <div class="Toastify__toast-container Toastify__toast-container--top-right sc-gacfCG idLnKJ" > <div class="Toastify__toast Toastify__toast-theme--light Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right" data-in="true" id="1" > <div class="Toastify__toast-body" role="alert" > <div class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter" > <svg fill="var(--toastify-icon-color-error)" height="100%" viewBox="0 0 24 24" width="100%" > <path d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z" /> </svg> </div> <div> Insufficient funds </div> </div> <button aria-label="close" class="Toastify__close-button Toastify__close-button--light" type="button" > <svg aria-hidden="true" viewBox="0 0 14 16" > <path d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z" fill-rule="evenodd" /> </svg> </button> <div class="Toastify__progress-bar--wrp" data-hidden="false" > <div class="Toastify__progress-bar--bg Toastify__progress-bar-theme--light Toastify__progress-bar--error" /> <div aria-hidden="false" aria-label="notification timer" class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--light Toastify__progress-bar--error" role="progressbar" style="animation-duration: 5000ms; animation-play-state: paused;" /> </div> </div> </div> </div> <div class="sc-cqPOvA clVrIX" > <div class="sc-gNJABI jWsBXr" > <div class="sc-kEmuub hIthwo" > <img alt="cashtab" class="sc-bbkauy jKzBhk" src="test-file-stub" /> </div> <div class="sc-eNNmBn edTXfc" > <select class="sc-eEieub iBVdYg" data-testid="wallet-select" id="wallets" name="wallets" > <option class="sc-RbTVP hMcPpG" value="Transaction Fixtures" > Transaction Fixtures </option> </select> <div class="sc-eopZyb iDutwN" > <button aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g" class="sc-iQNlJl dQNUoI" > <svg title="copy-paste" /> </button> <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gyYfmt" > <input checked="" class="sc-jzgbtB jgfSAg" id="show-hide-balance" name="show-hide-balance" title="show-hide-balance" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="show-hide-balance" > <span class="sc-gFaPwZ jegjwl" data-off="" data-on="" /> <span class="sc-fhYwyz jdgzKk" /> </label> </div> </div> </div> </div> <div class="sc-dznXNo epBKIx" title="Wallet Info" > <div class="sc-drlKqa gzObd... 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.findByText (/work/cashtab/src/components/Configure/__tests__/Configure.test.js:406:52) ====== CashTab Unit Tests: <Configure /> Setting "ABSOLUTE MINIMUM fees" settings will reduce fees to absolute min ====== Error: Unable to find an element with the text: eCash sent. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style <body> <div> <div class="sc-dEfkYy gCfMiu" > <div class="Toastify" > <div class="Toastify__toast-container Toastify__toast-container--top-right sc-gacfCG idLnKJ" > <div class="Toastify__toast Toastify__toast-theme--light Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right" data-in="true" id="2" > <div class="Toastify__toast-body" role="alert" > <div class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter" > <svg fill="var(--toastify-icon-color-error)" height="100%" viewBox="0 0 24 24" width="100%" > <path d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z" /> </svg> </div> <div> Insufficient funds </div> </div> <button aria-label="close" class="Toastify__close-button Toastify__close-button--light" type="button" > <svg aria-hidden="true" viewBox="0 0 14 16" > <path d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z" fill-rule="evenodd" /> </svg> </button> <div class="Toastify__progress-bar--wrp" data-hidden="false" > <div class="Toastify__progress-bar--bg Toastify__progress-bar-theme--light Toastify__progress-bar--error" /> <div aria-hidden="false" aria-label="notification timer" class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--light Toastify__progress-bar--error" role="progressbar" style="animation-duration: 5000ms; animation-play-state: paused;" /> </div> </div> </div> </div> <div class="sc-cqPOvA clVrIX" > <div class="sc-gNJABI jWsBXr" > <div class="sc-kEmuub hIthwo" > <img alt="cashtab" class="sc-bbkauy jKzBhk" src="test-file-stub" /> </div> <div class="sc-eNNmBn edTXfc" > <select class="sc-eEieub iBVdYg" data-testid="wallet-select" id="wallets" name="wallets" > <option class="sc-RbTVP hMcPpG" value="Transaction Fixtures" > Transaction Fixtures </option> </select> <div class="sc-eopZyb iDutwN" > <button aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g" class="sc-iQNlJl dQNUoI" > <svg title="copy-paste" /> </button> <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gyYfmt" > <input checked="" class="sc-jzgbtB jgfSAg" id="show-hide-balance" name="show-hide-balance" title="show-hide-balance" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="show-hide-balance" > <span class="sc-gFaPwZ jegjwl" data-off="" data-on="" /> <span class="sc-fhYwyz jdgzKk" /> </label> </div> </div> </div> </div> <div class="sc-dznXNo epBKIx" title="Wallet Info" > <div class="sc-drlKqa gzObd... 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.findByText (/work/cashtab/src/components/Configure/__tests__/Configure.test.js:506:52) ====== CashTab Unit Tests: <Configure /> We can choose a new fiat currency ====== Error: expect(element).toHaveTextContent() Expected element to have text content: 1 XEC = 0.00002000 GBP Received: 1 tXEC = 0.00002000 GBP at Object.toHaveTextContent (/work/cashtab/src/components/Configure/__tests__/Configure.test.js:586:62) ====== CashTab Unit Tests: <App /> Adding a contact to to a new contactList by clicking on tx history adds it to localforage and wallet context ====== Error: expect(element).toHaveTextContent() Expected element to have text content: 10,000.00 XEC Received: 10,000.00 tXEC at Object.toHaveTextContent (/work/cashtab/src/components/App/__tests__/App.test.js:417:60) at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:545:9) at processTimers (node:internal/timers:519:7) ====== CashTab Unit Tests: <App /> Adding a contact to an existing contactList by clicking on tx history adds it to localforage and wallet context ====== Error: expect(element).toHaveTextContent() Expected element to have text content: 10,000.00 XEC Received: 10,000.00 tXEC at Object.toHaveTextContent (/work/cashtab/src/components/App/__tests__/App.test.js:480:60) at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:545:9) at processTimers (node:internal/timers:519:7) ====== CashTab Unit Tests: <App /> Clicking "reply" on a Cashtab Msg correctly populates the SendXec to address and amount fields ====== Error: expect(element).toHaveTextContent() Expected element to have text content: 10,000.00 XEC Received: 10,000.00 tXEC at Object.toHaveTextContent (/work/cashtab/src/components/App/__tests__/App.test.js:554:60) at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:545:9) at processTimers (node:internal/timers:519:7) ====== CashTab Unit Tests: <App /> A new user can import a mnemonic of a wallet with a balance ====== Error: expect(element).toHaveTextContent() Expected element to have text content: 9,513.12 XEC Received: 9,513.12 tXEC at Object.toHaveTextContent (/work/cashtab/src/components/App/__tests__/App.test.js:734:60) at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:545:9) at processTimers (node:internal/timers:519:7) ====== CashTab Unit Tests: <App /> Migrating from wallet/savedWallet keys (version < 1.6.0): A user with an invalid Cashtab wallet as the active wallet is migrated on startup ====== Error: expect(element).toHaveTextContent() Expected element to have text content: 9,513.12 XEC Received: 9,513.12 tXEC at Object.toHaveTextContent (/work/cashtab/src/components/App/__tests__/App.test.js:784:60) at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:545:9) at processTimers (node:internal/timers:519:7) ====== CashTab Unit Tests: <App /> Migrating from wallet/savedWallet keys (version < 1.6.0): A user with pre-2.1.0 valid wallets in savedWallets has them all migrated to new storage keys and new shape ====== Error: expect(element).toHaveTextContent() Expected element to have text content: 9,513.12 XEC Received: 9,513.12 tXEC at Object.toHaveTextContent (/work/cashtab/src/components/App/__tests__/App.test.js:822:60) at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:545:9) at processTimers (node:internal/timers:519:7) ====== CashTab Unit Tests: <App /> Migrating (version >= 1.6.0 and < 2.1.0): A user with an invalid wallet stored at wallets key has that wallet migrated ====== Error: expect(element).toHaveTextContent() Expected element to have text content: 9,513.12 XEC Received: 9,513.12 tXEC at Object.toHaveTextContent (/work/cashtab/src/components/App/__tests__/App.test.js:862:60) at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:545:9) at processTimers (node:internal/timers:519:7) ====== CashTab Unit Tests: <App /> Migrating (version >= 1.6.0 and < 2.1.0): A user with multiple invalid wallets stored at wallets key has them migrated ====== Error: expect(element).toHaveTextContent() Expected element to have text content: 9,513.12 XEC Received: 9,513.12 tXEC at Object.toHaveTextContent (/work/cashtab/src/components/App/__tests__/App.test.js:906:60) at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:545:9) at processTimers (node:internal/timers:519:7) ====== CashTab Unit Tests: <App /> Cashtab version >= 1.6.0 and < 2.1.0: A user with an invalid Cashtab wallet as the active wallet is migrated on startup ====== Error: expect(element).toHaveTextContent() Expected element to have text content: 9,513.12 XEC Received: 9,513.12 tXEC at Object.toHaveTextContent (/work/cashtab/src/components/App/__tests__/App.test.js:938:60) at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:545:9) at processTimers (node:internal/timers:519:7) ====== CashTab Unit Tests: <App /> A user with all valid wallets stored at wallets key does not have any wallets migrated ====== Error: expect(element).toHaveTextContent() Expected element to have text content: 9,513.12 XEC Received: 9,513.12 tXEC at Object.toHaveTextContent (/work/cashtab/src/components/App/__tests__/App.test.js:965:60) at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:545:9) at processTimers (node:internal/timers:519:7) ====== CashTab Unit Tests: <App /> Migrating (version < 2.9.0): A user with multiple invalid wallets stored at wallets key has them migrated ====== Error: expect(element).toHaveTextContent() Expected element to have text content: 9,513.12 XEC Received: 9,513.12 tXEC at Object.toHaveTextContent (/work/cashtab/src/components/App/__tests__/App.test.js:1007:60) at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:545:9) at processTimers (node:internal/timers:519:7) ====== CashTab Unit Tests: <App /> Migrating (version < 2.9.0): A user with an invalid Cashtab wallet as the active wallet is migrated on startup ====== Error: expect(element).toHaveTextContent() Expected element to have text content: 9,513.12 XEC Received: 9,513.12 tXEC at Object.toHaveTextContent (/work/cashtab/src/components/App/__tests__/App.test.js:1039:60) at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:545:9) at processTimers (node:internal/timers:519:7) ====== CashTab Unit Tests: <SendXec /> Renders the SendXec screen with send address input ====== Error: expect(received).toHaveProperty(path, value) Expected path: "disabled" Expected value: false Received value: true at Object.toHaveProperty (/work/cashtab/src/components/Send/__tests__/SendXec.test.js:118:31) at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:545:9) at processTimers (node:internal/timers:519:7) ====== CashTab Unit Tests: <SendXec /> Pass a valid address and bip21 query string with invalid amount param (dust) to Send To field ====== TestingLibraryElementError: Unable to find an element with the text: Send amount must be at least 5.46 XEC. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style <body> <div> <div class="sc-dEfkYy gCfMiu" > <div class="Toastify" /> <div class="sc-cqPOvA clVrIX" > <div class="sc-gNJABI jWsBXr" > <div class="sc-kEmuub hIthwo" > <img alt="cashtab" class="sc-bbkauy jKzBhk" src="test-file-stub" /> </div> <div class="sc-eNNmBn edTXfc" > <select class="sc-eEieub iBVdYg" data-testid="wallet-select" id="wallets" name="wallets" > <option class="sc-RbTVP hMcPpG" value="Transaction Fixtures" > Transaction Fixtures </option> </select> <div class="sc-eopZyb iDutwN" > <button aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g" class="sc-iQNlJl dQNUoI" > <svg title="copy-paste" /> </button> <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gyYfmt" > <input checked="" class="sc-jzgbtB jgfSAg" id="show-hide-balance" name="show-hide-balance" title="show-hide-balance" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="show-hide-balance" > <span class="sc-gFaPwZ jegjwl" data-off="" data-on="" /> <span class="sc-fhYwyz jdgzKk" /> </label> </div> </div> </div> </div> <div class="sc-dznXNo epBKIx" title="Wallet Info" > <div class="sc-drlKqa gzObdq" title="Balance in XEC" > 9,513.12 tXEC </div> <div class="sc-bIqbHp eQIbJZ" title="Balance in Local Currency" > $ 0.29 USD </div> <p class="sc-jxGEyO dzLOSG" title="Price in Local Currency" > 1 tXEC = 0.00003000 USD </p> </div> <div class="sc-iuDHTM bRkhcV" > <div class="sc-VJcYb Uszwj" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gYUTVy" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle Multisend" name="Toggle Multisend" title="Toggle Multisend" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle Multisend" > <span class="sc-gFaPwZ hktLQl" data-off="Send to one" data-on="Send to many" /> <span class="sc-fhYwyz cnLmNg" /> </label> </div> </div> </div> <div class="sc-jtggT cVUzSi" > <div class="sc-ipZHIp jSDPgp" > <div class="sc-bmyXtO fetwxd" > <div class="sc-dEoRIm bvGLHm" > <div class="sc-gGBfsJ bcyGFW" > <div class="sc-jnlKLf iMOzHB" > <input class="sc-fYxtnH sc-ktHwxA ekzRpS" name="address" placeholder="Address" value="ecash:qp89xgjhcqdnzzemts0aj378nfe2mhu9yvxj9nhgg6?amount=5" /> <button class="sc-jqCOkK hZNrJH" title="Scan QR Code" > <svg /> </button> </div> <div class="sc-lhVmIH kOeoRj" /> </div> <div class="sc-hmXxxW frxJjy" > <a class="sc-iuJeZd ncRQs" href="https://explorer.e.cash/address/false" rel="noreferrer" target="_blank" /> </div> </div> <div class="sc-gGBfsJ bcyGFW" > <div class="sc-jnlKLf EKHPD" > <input class="sc-fYxtnH sc-ktHwxA dxPESR" disabled="" name="amount" placeholder="Amount" step="0.01" type="number" value="5" /> <select class="sc-iELTvK sc-cmTdod iEdEXA" data-testid="currency-select-dropdown" disabled="" > <option class="sc-btzYZH dfuDxf" data-testid="xec-option" value="XEC" > XEC </option> <option class="sc-btzYZH dfuDxf" data-testid="fiat-option" value="USD" > USD </option> </select> <button class="sc-cIShpX gJZnWf" disabled="" > max </button> </div> <div class="sc-lhVmIH kOeoRj" > Send amount must be at least 5.46 tXEC </div> </div> </div> </div> <div class="sc-iGrrsa jIFmiZ" > <div class="sc-gGBfsJ bcyGFW" > <textarea class="sc-hEsumM kttucH" height="142" name="multiAddressInput" placeholder="One address & amount per line, separated by comma e.g. ecash:qpatql05s9jfavnu0tv6lkjjk25n6tmj9gkpyrlwu8,500 ecash:qzvydd4n3lm3xv62cx078nu9rg0e3srmqq0knykfed,700" /> <div class="sc-kTUwUJ inNpAB" > <div class="sc-dqBHgY foXbGf" /> </div> </div> </div> </div> <div class="sc-jVODtj iheIHG" > <div class="sc-kUaPvJ gjMMZr" > <div class="sc-giadOv cbmuSd" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo bckJer" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle Cashtab Msg" name="Toggle Cashtab Msg" title="Toggle Cashtab Msg" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle Cashtab Msg" > <span class="sc-gFaPwZ hktLQl" data-off="✉️" data-on="✉️" /> <span class="sc-fhYwyz dqlgzj" /> </label> </div> </div> <div class="sc-fONwsr dGcugg" > Cashtab Msg </div> </div> </div> <div class="sc-kUaPvJ gjMMZr" > <div class="sc-giadOv cbmuSd" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo bckJer" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle op_return_raw" name="Toggle op_return_raw" title="Toggle op_return_raw" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle op_return_raw" > <span class="sc-gFaPwZ hktLQl" data-off="" data-on="" /> <span class="sc-fhYwyz dqlgzj" /> </label> </div> </div> <div class="sc-fONwsr dGcugg" > op_return_raw </div> </div> </div> </div> <div class="sc-cqCuEk fZNZTU" > <div class="sc-iqzUVk cugiDL" > 5 tXEC </div> <div class="sc-hMFtBS hcwxtD" > = $ 0.00 USD </div> </div> <button class="sc-bwCtUz sc-eTuwsz OqSfl" disabled="" style="margin-top: 12px;" > Send </button> </div> </div> <div class="sc-yZwTr cWMKbM" > <button class="sc-FQuPU doSOrh" > <svg /> </button> <button aria-label="Send Screen" class="sc-FQuPU eSnnLf" style="padding-bottom: 10px;" > <div class="sc-iwsKbI cuDgAv" > <svg title="tx-sent" /> </div> </button> <button aria-label="Tokens" class="sc-FQuPU doSOrh" > <svg title="Tokens" /> </button> <button aria-label="Receive" class="sc-FQuPU doSOrh" > <svg title="tx-received" /> </button> <div class="sc-fjhmcy jOtBOs" title="Show Other Screens" > <span class="sc-hwcHae jiKkID" /> <div class="sc-lnmtFM dXSWsQ" title="Other Screens" > <button class="sc-erNlkL jUqjSc" > <p> Wallet Backup </p> <svg title="wallet" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Wallets </p> <svg title="wallets" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Listed NFTs </p> <svg title="NFT" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Contacts </p> <svg title="Contact List" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Airdrop </p> <svg title="tx-airdrop" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Rewards </p> <svg title="Cashtab Rewards" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Swap </p> <svg title="swap" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Sign & Verify </p> <svg class="sc-htpNat bPFBeM" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Settings </p> <svg title="settings" /> </button> </div> </div> </div> </div> </div> </div> </body> at Object.getElementError (/work/cashtab/node_modules/@testing-library/dom/dist/config.js:37:19) at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:76:38 at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:52:17 at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:95:19 at Object.getByText (/work/cashtab/src/components/Send/__tests__/SendXec.test.js:721:20) ====== CashTab Unit Tests: <SendXec /> Valid address with valid bip21 query string with valid amount param rejected if amount exceeds wallet balance ====== TestingLibraryElementError: Unable to find an element with the text: Amount 1,000,000.00 XEC exceeds wallet balance of 9,513.12 XEC. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style <body> <div> <div class="sc-dEfkYy gCfMiu" > <div class="Toastify" /> <div class="sc-cqPOvA clVrIX" > <div class="sc-gNJABI jWsBXr" > <div class="sc-kEmuub hIthwo" > <img alt="cashtab" class="sc-bbkauy jKzBhk" src="test-file-stub" /> </div> <div class="sc-eNNmBn edTXfc" > <select class="sc-eEieub iBVdYg" data-testid="wallet-select" id="wallets" name="wallets" > <option class="sc-RbTVP hMcPpG" value="Transaction Fixtures" > Transaction Fixtures </option> </select> <div class="sc-eopZyb iDutwN" > <button aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g" class="sc-iQNlJl dQNUoI" > <svg title="copy-paste" /> </button> <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gyYfmt" > <input checked="" class="sc-jzgbtB jgfSAg" id="show-hide-balance" name="show-hide-balance" title="show-hide-balance" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="show-hide-balance" > <span class="sc-gFaPwZ jegjwl" data-off="" data-on="" /> <span class="sc-fhYwyz jdgzKk" /> </label> </div> </div> </div> </div> <div class="sc-dznXNo epBKIx" title="Wallet Info" > <div class="sc-drlKqa gzObdq" title="Balance in XEC" > 9,513.12 tXEC </div> <div class="sc-bIqbHp eQIbJZ" title="Balance in Local Currency" > $ 0.29 USD </div> <p class="sc-jxGEyO dzLOSG" title="Price in Local Currency" > 1 tXEC = 0.00003000 USD </p> </div> <div class="sc-iuDHTM bRkhcV" > <div class="sc-VJcYb Uszwj" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gYUTVy" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle Multisend" name="Toggle Multisend" title="Toggle Multisend" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle Multisend" > <span class="sc-gFaPwZ hktLQl" data-off="Send to one" data-on="Send to many" /> <span class="sc-fhYwyz cnLmNg" /> </label> </div> </div> </div> <div class="sc-jtggT cVUzSi" > <div class="sc-ipZHIp jSDPgp" > <div class="sc-bmyXtO fetwxd" > <div class="sc-dEoRIm bvGLHm" > <div class="sc-gGBfsJ bcyGFW" > <div class="sc-jnlKLf iMOzHB" > <input class="sc-fYxtnH sc-ktHwxA ekzRpS" name="address" placeholder="Address" value="ecash:qp89xgjhcqdnzzemts0aj378nfe2mhu9yvxj9nhgg6?amount=1000000" /> <button class="sc-jqCOkK hZNrJH" title="Scan QR Code" > <svg /> </button> </div> <div class="sc-lhVmIH kOeoRj" /> </div> <div class="sc-hmXxxW frxJjy" > <a class="sc-iuJeZd ncRQs" href="https://explorer.e.cash/address/false" rel="noreferrer" target="_blank" /> </div> </div> <div class="sc-gGBfsJ bcyGFW" > <div class="sc-jnlKLf EKHPD" > <input class="sc-fYxtnH sc-ktHwxA dxPESR" disabled="" name="amount" placeholder="Amount" step="0.01" type="number" value="1000000" /> <select class="sc-iELTvK sc-cmTdod iEdEXA" data-testid="currency-select-dropdown" disabled="" > <option class="sc-btzYZH dfuDxf" data-testid="xec-option" value="XEC" > XEC </option> <option class="sc-btzYZH dfuDxf" data-testid="fiat-option" value="USD" > USD </option> </select> <button class="sc-cIShpX gJZnWf" disabled="" > max </button> </div> <div class="sc-lhVmIH kOeoRj" > Amount 1,000,000.00 tXEC exceeds wallet balance of 9,513.12 tXEC </div> </div> </div> </div> <div class="sc-iGrrsa jIFmiZ" > <div class="sc-gGBfsJ bcyGFW" > <textarea class="sc-hEsumM kttucH" height="142" name="multiAddressInput" placeholder="One address & amount per line, separated by comma e.g. ecash:qpatql05s9jfavnu0tv6lkjjk25n6tmj9gkpyrlwu8,500 ecash:qzvydd4n3lm3xv62cx078nu9rg0e3srmqq0knykfed,700" /> <div class="sc-kTUwUJ inNpAB" > <div class="sc-dqBHgY foXbGf" /> </div> </div> </div> </div> <div class="sc-jVODtj iheIHG" > <div class="sc-kUaPvJ gjMMZr" > <div class="sc-giadOv cbmuSd" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo bckJer" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle Cashtab Msg" name="Toggle Cashtab Msg" title="Toggle Cashtab Msg" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle Cashtab Msg" > <span class="sc-gFaPwZ hktLQl" data-off="✉️" data-on="✉️" /> <span class="sc-fhYwyz dqlgzj" /> </label> </div> </div> <div class="sc-fONwsr dGcugg" > Cashtab Msg </div> </div> </div> <div class="sc-kUaPvJ gjMMZr" > <div class="sc-giadOv cbmuSd" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo bckJer" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle op_return_raw" name="Toggle op_return_raw" title="Toggle op_return_raw" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle op_return_raw" > <span class="sc-gFaPwZ hktLQl" data-off="" data-on="" /> <span class="sc-fhYwyz dqlgzj" /> </label> </div> </div> <div class="sc-fONwsr dGcugg" > op_return_raw </div> </div> </div> </div> <div class="sc-cqCuEk fZNZTU" > <div class="sc-iqzUVk cugiDL" > 1,000,000 tXEC </div> <div class="sc-hMFtBS hcwxtD" > = $ 30.00 USD </div> </div> <button class="sc-bwCtUz sc-eTuwsz OqSfl" disabled="" style="margin-top: 12px;" > Send </button> </div> </div> <div class="sc-yZwTr cWMKbM" > <button class="sc-FQuPU doSOrh" > <svg /> </button> <button aria-label="Send Screen" class="sc-FQuPU eSnnLf" style="padding-bottom: 10px;" > <div class="sc-iwsKbI cuDgAv" > <svg title="tx-sent" /> </div> </button> <button aria-label="Tokens" class="sc-FQuPU doSOrh" > <svg title="Tokens" /> </button> <button aria-label="Receive" class="sc-FQuPU doSOrh" > <svg title="tx-received" /> </button> <div class="sc-fjhmcy jOtBOs" title="Show Other Screens" > <span class="sc-hwcHae jiKkID" /> <div class="sc-lnmtFM dXSWsQ" title="Other Screens" > <button class="sc-erNlkL jUqjSc" > <p> Wallet Backup </p> <svg title="wallet" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Wallets </p> <svg title="wallets" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Listed NFTs </p> <svg title="NFT" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Contacts </p> <svg title="Contact List" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Airdrop </p> <svg title="tx-airdrop" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Rewards </p> <svg title="Cashtab Rewards" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Swap </p> <svg title="swap" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Sign & Verify </p> <svg class="sc-htpNat bPFBeM" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Settings </p> <svg title="settings" /> </button> </div> </div> </div> </div> </div> </div> </body> at Object.getElementError (/work/cashtab/node_modules/@testing-library/dom/dist/config.js:37:19) at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:76:38 at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:52:17 at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:95:19 at Object.getByText (/work/cashtab/src/components/Send/__tests__/SendXec.test.js:775:20) ====== CashTab Unit Tests: <SendXec /> Pass a valid alias and bip21 query string with invalid amount param (too many decimals) to Send To field ====== TestingLibraryElementError: Unable to find an element with the text: XEC transactions do not support more than 2 decimal places. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style <body> <div> <div class="sc-dEfkYy gCfMiu" > <div class="Toastify" /> <div class="sc-cqPOvA clVrIX" > <div class="sc-gNJABI jWsBXr" > <div class="sc-kEmuub hIthwo" > <img alt="cashtab" class="sc-bbkauy jKzBhk" src="test-file-stub" /> </div> <div class="sc-eNNmBn edTXfc" > <select class="sc-eEieub iBVdYg" data-testid="wallet-select" id="wallets" name="wallets" > <option class="sc-RbTVP hMcPpG" value="Transaction Fixtures" > Transaction Fixtures </option> </select> <div class="sc-eopZyb iDutwN" > <button aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g" class="sc-iQNlJl dQNUoI" > <svg title="copy-paste" /> </button> <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gyYfmt" > <input checked="" class="sc-jzgbtB jgfSAg" id="show-hide-balance" name="show-hide-balance" title="show-hide-balance" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="show-hide-balance" > <span class="sc-gFaPwZ jegjwl" data-off="" data-on="" /> <span class="sc-fhYwyz jdgzKk" /> </label> </div> </div> </div> </div> <div class="sc-dznXNo epBKIx" title="Wallet Info" > <div class="sc-drlKqa gzObdq" title="Balance in XEC" > 9,513.12 tXEC </div> <div class="sc-bIqbHp eQIbJZ" title="Balance in Local Currency" > $ 0.29 USD </div> <p class="sc-jxGEyO dzLOSG" title="Price in Local Currency" > 1 tXEC = 0.00003000 USD </p> </div> <div class="sc-iuDHTM bRkhcV" > <div class="sc-VJcYb Uszwj" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gYUTVy" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle Multisend" name="Toggle Multisend" title="Toggle Multisend" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle Multisend" > <span class="sc-gFaPwZ hktLQl" data-off="Send to one" data-on="Send to many" /> <span class="sc-fhYwyz cnLmNg" /> </label> </div> </div> </div> <div class="sc-jtggT cVUzSi" > <div class="sc-ipZHIp jSDPgp" > <div class="sc-bmyXtO fetwxd" > <div class="sc-dEoRIm bvGLHm" > <div class="sc-gGBfsJ bcyGFW" > <div class="sc-jnlKLf iMOzHB" > <input class="sc-fYxtnH sc-ktHwxA ekzRpS" name="address" placeholder="Address" value="chicken.xec?amount=500.123" /> <button class="sc-jqCOkK hZNrJH" title="Scan QR Code" > <svg /> </button> </div> <div class="sc-lhVmIH kOeoRj" /> </div> <div class="sc-hmXxxW frxJjy" > <a class="sc-iuJeZd ncRQs" href="https://explorer.e.cash/address/ecash:qpmytrdsakt0axrrlswvaj069nat3p9s7cjctmjasj" rel="noreferrer" target="_blank" > ecash:qpmy...mjasj </a> </div> </div> <div class="sc-gGBfsJ bcyGFW" > <div class="sc-jnlKLf EKHPD" > <input class="sc-fYxtnH sc-ktHwxA dxPESR" disabled="" name="amount" placeholder="Amount" step="0.01" type="number" value="500.123" /> <select class="sc-iELTvK sc-cmTdod iEdEXA" data-testid="currency-select-dropdown" disabled="" > <option class="sc-btzYZH dfuDxf" data-testid="xec-option" value="XEC" > XEC </option> <option class="sc-btzYZH dfuDxf" data-testid="fiat-option" value="USD" > USD </option> </select> <button class="sc-cIShpX gJZnWf" disabled="" > max </button> </div> <div class="sc-lhVmIH kOeoRj" > tXEC transactions do not support more than 2 decimal places </div> </div> </div> </div> <div class="sc-iGrrsa jIFmiZ" > <div class="sc-gGBfsJ bcyGFW" > <textarea class="sc-hEsumM kttucH" height="142" name="multiAddressInput" placeholder="One address & amount per line, separated by comma e.g. ecash:qpatql05s9jfavnu0tv6lkjjk25n6tmj9gkpyrlwu8,500 ecash:qzvydd4n3lm3xv62cx078nu9rg0e3srmqq0knykfed,700" /> <div class="sc-kTUwUJ inNpAB" > <div class="sc-dqBHgY foXbGf" /> </div> </div> </div> </div> <div class="sc-jVODtj iheIHG" > <div class="sc-kUaPvJ gjMMZr" > <div class="sc-giadOv cbmuSd" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo bckJer" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle Cashtab Msg" name="Toggle Cashtab Msg" title="Toggle Cashtab Msg" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle Cashtab Msg" > <span class="sc-gFaPwZ hktLQl" data-off="✉️" data-on="✉️" /> <span class="sc-fhYwyz dqlgzj" /> </label> </div> </div> <div class="sc-fONwsr dGcugg" > Cashtab Msg </div> </div> </div> <div class="sc-kUaPvJ gjMMZr" > <div class="sc-giadOv cbmuSd" > <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo bckJer" > <input class="sc-jzgbtB jgfSAg" disabled="" id="Toggle op_return_raw" name="Toggle op_return_raw" title="Toggle op_return_raw" type="checkbox" /> <label class="sc-bnXvFD jrCFus" disabled="" for="Toggle op_return_raw" > <span class="sc-gFaPwZ hktLQl" data-off="" data-on="" /> <span class="sc-fhYwyz dqlgzj" /> </label> </div> </div> <div class="sc-fONwsr dGcugg" > op_return_raw </div> </div> </div> </div> <div class="sc-cqCuEk fZNZTU" > <div class="sc-iqzUVk cugiDL" > 500.12 tXEC </div> <div class="sc-hMFtBS hcwxtD" > = $ 0.02 USD </div> </div> <button class="sc-bwCtUz sc-eTuwsz OqSfl" disabled="" style="margin-top: 12px;" > Send </button> </div> </div> <div class="sc-yZwTr cWMKbM" > <button class="sc-FQuPU doSOrh" > <svg /> </button> <button aria-label="Send Screen" class="sc-FQuPU eSnnLf" style="padding-bottom: 10px;" > <div class="sc-iwsKbI cuDgAv" > <svg title="tx-sent" /> </div> </button> <button aria-label="Tokens" class="sc-FQuPU doSOrh" > <svg title="Tokens" /> </button> <button aria-label="Receive" class="sc-FQuPU doSOrh" > <svg title="tx-received" /> </button> <div class="sc-fjhmcy jOtBOs" title="Show Other Screens" > <span class="sc-hwcHae jiKkID" /> <div class="sc-lnmtFM dXSWsQ" title="Other Screens" > <button class="sc-erNlkL jUqjSc" > <p> Wallet Backup </p> <svg title="wallet" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Wallets </p> <svg title="wallets" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Listed NFTs </p> <svg title="NFT" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Contacts </p> <svg title="Contact List" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Airdrop </p> <svg title="tx-airdrop" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Rewards </p> <svg title="Cashtab Rewards" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Swap </p> <svg title="swap" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Sign & Verify </p> <svg class="sc-htpNat bPFBeM" /> </button> <button class="sc-erNlkL jUqjSc" > <p> Settings </p> <svg title="settings" /> </button> </div> </div> </div> </div> </div> </div> </body> at Object.getElementError (/work/cashtab/node_modules/@testing-library/dom/dist/config.js:37:19) at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:76:38 at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:52:17 at /work/cashtab/node_modules/@testing-library/dom/dist/query-helpers.js:95:19 at Object.getByText (/work/cashtab/src/components/Send/__tests__/SendXec.test.js:852:20) ====== CashTab Unit Tests: <SendXec /> Clicking "Send" will send a valid tx with op_return_raw after entry of a valid address and bip21 query string with valid amount and op_return_raw params to Send To field ====== Error: Unable to find an element with the text: eCash sent. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style <body> <div> <div class="sc-dEfkYy gCfMiu" > <div class="Toastify" > <div class="Toastify__toast-container Toastify__toast-container--top-right sc-gacfCG idLnKJ" > <div class="Toastify__toast Toastify__toast-theme--light Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right" data-in="true" id="1" > <div class="Toastify__toast-body" role="alert" > <div class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter" > <svg fill="var(--toastify-icon-color-error)" height="100%" viewBox="0 0 24 24" width="100%" > <path d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z" /> </svg> </div> <div> Insufficient funds </div> </div> <button aria-label="close" class="Toastify__close-button Toastify__close-button--light" type="button" > <svg aria-hidden="true" viewBox="0 0 14 16" > <path d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z" fill-rule="evenodd" /> </svg> </button> <div class="Toastify__progress-bar--wrp" data-hidden="false" > <div class="Toastify__progress-bar--bg Toastify__progress-bar-theme--light Toastify__progress-bar--error" /> <div aria-hidden="false" aria-label="notification timer" class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--light Toastify__progress-bar--error" role="progressbar" style="animation-duration: 5000ms; animation-play-state: paused;" /> </div> </div> </div> </div> <div class="sc-cqPOvA clVrIX" > <div class="sc-gNJABI jWsBXr" > <div class="sc-kEmuub hIthwo" > <img alt="cashtab" class="sc-bbkauy jKzBhk" src="test-file-stub" /> </div> <div class="sc-eNNmBn edTXfc" > <select class="sc-eEieub iBVdYg" data-testid="wallet-select" id="wallets" name="wallets" > <option class="sc-RbTVP hMcPpG" value="Transaction Fixtures" > Transaction Fixtures </option> </select> <div class="sc-eopZyb iDutwN" > <button aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g" class="sc-iQNlJl dQNUoI" > <svg title="copy-paste" /> </button> <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gyYfmt" > <input checked="" class="sc-jzgbtB jgfSAg" id="show-hide-balance" name="show-hide-balance" title="show-hide-balance" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="show-hide-balance" > <span class="sc-gFaPwZ jegjwl" data-off="" data-on="" /> <span class="sc-fhYwyz jdgzKk" /> </label> </div> </div> </div> </div> <div class="sc-dznXNo epBKIx" title="Wallet Info" > <div class="sc-drlKqa gzObd... 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.findByText (/work/cashtab/src/components/Send/__tests__/SendXec.test.js:1256:52) ====== CashTab Unit Tests: <SendXec /> We can calculate max send amount with and without a cashtab msg, and send a max sat tx with a cashtab msg ====== Error: Unable to find an element with the text: eCash sent. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style <body> <div> <div class="sc-dEfkYy gCfMiu" > <div class="Toastify" > <div class="Toastify__toast-container Toastify__toast-container--top-right sc-gacfCG idLnKJ" > <div class="Toastify__toast Toastify__toast-theme--light Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right" data-in="true" id="2" > <div class="Toastify__toast-body" role="alert" > <div class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter" > <svg fill="var(--toastify-icon-color-error)" height="100%" viewBox="0 0 24 24" width="100%" > <path d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z" /> </svg> </div> <div> Insufficient funds </div> </div> <button aria-label="close" class="Toastify__close-button Toastify__close-button--light" type="button" > <svg aria-hidden="true" viewBox="0 0 14 16" > <path d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z" fill-rule="evenodd" /> </svg> </button> <div class="Toastify__progress-bar--wrp" data-hidden="false" > <div class="Toastify__progress-bar--bg Toastify__progress-bar-theme--light Toastify__progress-bar--error" /> <div aria-hidden="false" aria-label="notification timer" class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--light Toastify__progress-bar--error" role="progressbar" style="animation-duration: 5000ms; animation-play-state: paused;" /> </div> </div> </div> </div> <div class="sc-cqPOvA clVrIX" > <div class="sc-gNJABI jWsBXr" > <div class="sc-kEmuub hIthwo" > <img alt="cashtab" class="sc-bbkauy jKzBhk" src="test-file-stub" /> </div> <div class="sc-eNNmBn edTXfc" > <select class="sc-eEieub iBVdYg" data-testid="wallet-select" id="wallets" name="wallets" > <option class="sc-RbTVP hMcPpG" value="Transaction Fixtures" > Transaction Fixtures </option> </select> <div class="sc-eopZyb iDutwN" > <button aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g" class="sc-iQNlJl dQNUoI" > <svg title="copy-paste" /> </button> <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gyYfmt" > <input checked="" class="sc-jzgbtB jgfSAg" id="show-hide-balance" name="show-hide-balance" title="show-hide-balance" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="show-hide-balance" > <span class="sc-gFaPwZ jegjwl" data-off="" data-on="" /> <span class="sc-fhYwyz jdgzKk" /> </label> </div> </div> </div> </div> <div class="sc-dznXNo epBKIx" title="Wallet Info" > <div class="sc-drlKqa gzObd... 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.findByText (/work/cashtab/src/components/Send/__tests__/SendXec.test.js:1383:52) ====== CashTab Unit Tests: <SendXec /> If the user has minFeeSends set to true but no longer has the right token amount, the feature is disabled ====== Error: Unable to find an element with the text: eCash sent. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style <body> <div> <div class="sc-dEfkYy gCfMiu" > <div class="Toastify" > <div class="Toastify__toast-container Toastify__toast-container--top-right sc-gacfCG idLnKJ" > <div class="Toastify__toast Toastify__toast-theme--light Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right" data-in="true" id="3" > <div class="Toastify__toast-body" role="alert" > <div class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter" > <svg fill="var(--toastify-icon-color-error)" height="100%" viewBox="0 0 24 24" width="100%" > <path d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z" /> </svg> </div> <div> Insufficient funds </div> </div> <button aria-label="close" class="Toastify__close-button Toastify__close-button--light" type="button" > <svg aria-hidden="true" viewBox="0 0 14 16" > <path d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z" fill-rule="evenodd" /> </svg> </button> <div class="Toastify__progress-bar--wrp" data-hidden="false" > <div class="Toastify__progress-bar--bg Toastify__progress-bar-theme--light Toastify__progress-bar--error" /> <div aria-hidden="false" aria-label="notification timer" class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--light Toastify__progress-bar--error" role="progressbar" style="animation-duration: 5000ms; animation-play-state: paused;" /> </div> </div> </div> </div> <div class="sc-cqPOvA clVrIX" > <div class="sc-gNJABI jWsBXr" > <div class="sc-kEmuub hIthwo" > <img alt="cashtab" class="sc-bbkauy jKzBhk" src="test-file-stub" /> </div> <div class="sc-eNNmBn edTXfc" > <select class="sc-eEieub iBVdYg" data-testid="wallet-select" id="wallets" name="wallets" > <option class="sc-RbTVP hMcPpG" value="Transaction Fixtures" > Transaction Fixtures </option> </select> <div class="sc-eopZyb iDutwN" > <button aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g" class="sc-iQNlJl dQNUoI" > <svg title="copy-paste" /> </button> <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gyYfmt" > <input checked="" class="sc-jzgbtB jgfSAg" id="show-hide-balance" name="show-hide-balance" title="show-hide-balance" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="show-hide-balance" > <span class="sc-gFaPwZ jegjwl" data-off="" data-on="" /> <span class="sc-fhYwyz jdgzKk" /> </label> </div> </div> </div> </div> <div class="sc-dznXNo epBKIx" title="Wallet Info" > <div class="sc-drlKqa gzObd... 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.findByText (/work/cashtab/src/components/Send/__tests__/SendXec.test.js:1499:52) ====== CashTab Unit Tests: <SendXec /> If we type a Cashtab msg, then disable the switch, we send a tx without our typed Cashtab message ====== Error: Unable to find an element with the text: eCash sent. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style <body> <div> <div class="sc-dEfkYy gCfMiu" > <div class="Toastify" > <div class="Toastify__toast-container Toastify__toast-container--top-right sc-gacfCG idLnKJ" > <div class="Toastify__toast Toastify__toast-theme--light Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right" data-in="true" id="6" > <div class="Toastify__toast-body" role="alert" > <div class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter" > <svg fill="var(--toastify-icon-color-error)" height="100%" viewBox="0 0 24 24" width="100%" > <path d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z" /> </svg> </div> <div> Insufficient funds </div> </div> <button aria-label="close" class="Toastify__close-button Toastify__close-button--light" type="button" > <svg aria-hidden="true" viewBox="0 0 14 16" > <path d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z" fill-rule="evenodd" /> </svg> </button> <div class="Toastify__progress-bar--wrp" data-hidden="false" > <div class="Toastify__progress-bar--bg Toastify__progress-bar-theme--light Toastify__progress-bar--error" /> <div aria-hidden="false" aria-label="notification timer" class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--light Toastify__progress-bar--error" role="progressbar" style="animation-duration: 5000ms; animation-play-state: paused;" /> </div> </div> </div> </div> <div class="sc-cqPOvA clVrIX" > <div class="sc-gNJABI jWsBXr" > <div class="sc-kEmuub hIthwo" > <img alt="cashtab" class="sc-bbkauy jKzBhk" src="test-file-stub" /> </div> <div class="sc-eNNmBn edTXfc" > <select class="sc-eEieub iBVdYg" data-testid="wallet-select" id="wallets" name="wallets" > <option class="sc-RbTVP hMcPpG" value="Transaction Fixtures" > Transaction Fixtures </option> </select> <div class="sc-eopZyb iDutwN" > <button aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g" class="sc-iQNlJl dQNUoI" > <svg title="copy-paste" /> </button> <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gyYfmt" > <input checked="" class="sc-jzgbtB jgfSAg" id="show-hide-balance" name="show-hide-balance" title="show-hide-balance" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="show-hide-balance" > <span class="sc-gFaPwZ jegjwl" data-off="" data-on="" /> <span class="sc-fhYwyz jdgzKk" /> </label> </div> </div> </div> </div> <div class="sc-dznXNo epBKIx" title="Wallet Info" > <div class="sc-drlKqa gzObd... 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.findByText (/work/cashtab/src/components/Send/__tests__/SendXec.test.js:1767:52) ====== CashTab Unit Tests: <SendXec /> Entering a valid bip21 query string with multiple outputs and op_return_raw will correctly populate UI fields, and the tx can be sent ====== Error: Unable to find an element with the text: eCash sent. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible. Ignored nodes: comments, script, style <body> <div> <div class="sc-dEfkYy gCfMiu" > <div class="Toastify" > <div class="Toastify__toast-container Toastify__toast-container--top-right sc-gacfCG idLnKJ" > <div class="Toastify__toast Toastify__toast-theme--light Toastify__toast--error Toastify__toast--close-on-click Toastify--animate Toastify__bounce-enter--top-right" data-in="true" id="7" > <div class="Toastify__toast-body" role="alert" > <div class="Toastify__toast-icon Toastify--animate-icon Toastify__zoom-enter" > <svg fill="var(--toastify-icon-color-error)" height="100%" viewBox="0 0 24 24" width="100%" > <path d="M11.983 0a12.206 12.206 0 00-8.51 3.653A11.8 11.8 0 000 12.207 11.779 11.779 0 0011.8 24h.214A12.111 12.111 0 0024 11.791 11.766 11.766 0 0011.983 0zM10.5 16.542a1.476 1.476 0 011.449-1.53h.027a1.527 1.527 0 011.523 1.47 1.475 1.475 0 01-1.449 1.53h-.027a1.529 1.529 0 01-1.523-1.47zM11 12.5v-6a1 1 0 012 0v6a1 1 0 11-2 0z" /> </svg> </div> <div> Insufficient funds </div> </div> <button aria-label="close" class="Toastify__close-button Toastify__close-button--light" type="button" > <svg aria-hidden="true" viewBox="0 0 14 16" > <path d="M7.71 8.23l3.75 3.75-1.48 1.48-3.75-3.75-3.75 3.75L1 11.98l3.75-3.75L1 4.48 2.48 3l3.75 3.75L9.98 3l1.48 1.48-3.75 3.75z" fill-rule="evenodd" /> </svg> </button> <div class="Toastify__progress-bar--wrp" data-hidden="false" > <div class="Toastify__progress-bar--bg Toastify__progress-bar-theme--light Toastify__progress-bar--error" /> <div aria-hidden="false" aria-label="notification timer" class="Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar-theme--light Toastify__progress-bar--error" role="progressbar" style="animation-duration: 5000ms; animation-play-state: paused;" /> </div> </div> </div> </div> <div class="sc-cqPOvA clVrIX" > <div class="sc-gNJABI jWsBXr" > <div class="sc-kEmuub hIthwo" > <img alt="cashtab" class="sc-bbkauy jKzBhk" src="test-file-stub" /> </div> <div class="sc-eNNmBn edTXfc" > <select class="sc-eEieub iBVdYg" data-testid="wallet-select" id="wallets" name="wallets" > <option class="sc-RbTVP hMcPpG" value="Transaction Fixtures" > Transaction Fixtures </option> </select> <div class="sc-eopZyb iDutwN" > <button aria-label="Copy ecash:qqa9lv3kjd8vq7952p7rq0f6lkpqvlu0cydvxtd70g" class="sc-iQNlJl dQNUoI" > <svg title="copy-paste" /> </button> <div class="sc-cpmLhU dyeBXy" > <div class="sc-dymIpo gyYfmt" > <input checked="" class="sc-jzgbtB jgfSAg" id="show-hide-balance" name="show-hide-balance" title="show-hide-balance" type="checkbox" /> <label class="sc-bnXvFD hBMwJl" for="show-hide-balance" > <span class="sc-gFaPwZ jegjwl" data-off="" data-on="" /> <span class="sc-fhYwyz jdgzKk" /> </label> </div> </div> </div> </div> <div class="sc-dznXNo epBKIx" title="Wallet Info" > <div class="sc-drlKqa gzObd... 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.findByText (/work/cashtab/src/components/Send/__tests__/SendXec.test.js:1885:52)
Each failure log is accessible here:
CashTab Unit Tests: Cashtab validation functions Parses user input address strings with parseAddressInput parseAddressInput: Valid address with valid amount param exceeding user balance by one satoshi, no decimals
CashTab Unit Tests: Cashtab validation functions Parses user input address strings with parseAddressInput parseAddressInput: Valid address with invalid amount param (too many decimal places)
CashTab Unit Tests: Cashtab validation functions Parses user input address strings with parseAddressInput parseAddressInput: Valid primary address & amount, invalid secondary amount
CashTab Unit Tests: Cashtab validation functions Determines if a user input send amount is valid isValidXecSendAmount: A fiat value that converts to one satoshi more than the user total balance is rejected
CashTab Unit Tests: Cashtab validation functions Determines if a user input multi-send CSV is valid isValidMultiSendUserInput: Rejects correctly formed multisend output for amount exceeding wallet total balance by 1 satoshi
CashTab Unit Tests: Cashtab validation functions Determines if a user input multi-send CSV is valid isValidMultiSendUserInput: Returns expected error msg for invalid value (dust)
CashTab Unit Tests: Cashtab validation functions Determines if a user input multi-send CSV is valid isValidMultiSendUserInput: Returns expected error msg and line numberfor invalid value (too many decimal places)
CashTab Unit Tests: <Home /> Renders the loading component while loading, then the Home screen
CashTab Unit Tests: <Nfts /> If we switch wallets, listings that were previously organized as "My Listing" are instead organized as for sale
CashTab Unit Tests: <SendXec /> rendered with params in URL Legacy params. Address and value keys are set and valid.
CashTab Unit Tests: <SendXec /> rendered with params in URL Legacy params. Address and value keys are set and valid. Invalid bip21 string is ignored.
CashTab Unit Tests: <SendXec /> rendered with params in URL Legacy params. Address field is populated + disabled while value field is empty + enabled if legacy url params have address defined and value present as undefined
CashTab Unit Tests: <SendXec /> rendered with params in URL Legacy params. Address field is populated + disabled while value field is empty + enabled if legacy url params have address defined and no value key present
CashTab Unit Tests: <SendXec /> rendered with params in URL Legacy params. Params are ignored if only value param is present
CashTab Unit Tests: <SendXec /> rendered with params in URL Legacy params. Params are ignored if param is duplicated
CashTab Unit Tests: <SendXec /> rendered with params in URL Legacy params are not parsed as bip21 even if the bip21 param appears in the string
CashTab Unit Tests: <SendXec /> rendered with params in URL bip21 param - valid bip21 param with amount and op_return_raw is parsed as expected
CashTab Unit Tests: <SendXec /> rendered with params in URL bip21 param - an invalid bip21 param shows validation errors but cannot be changed
CashTab Unit Tests: <SendXec /> rendered with params in URL No params. Send screen loads normally with no rendered input.
CashTab Unit Tests: <SendXec /> rendered with params in URL bip21 param - valid bip21 param with amount, op_return_raw, and additional output with amount is parsed as expected
CashTab Unit Tests: <BalanceHeader /> Renders the BalanceHeader component correctly with default locale en-US
CashTab Unit Tests: <BalanceHeader /> Renders the BalanceHeader component correctly with fr-FR locale
CashTab Unit Tests: <BalanceHeader /> Balance is hidden if cashtabSettings.balanceVisible is false
CashTab Unit Tests: <BalanceHeader /> Renders fiat price for a non-USD currency
CashTab Unit Tests: <BalanceHeader /> Fiat price and forex are not displayed if fiatPrice is unavailable
CashTab Unit Tests: <Receive /> Renders as expected on desktop, including copy paste functionality of clicking on the QR code
CashTab Unit Tests: <Token /> available actions rendered We can list an SLP1 NFT
CashTab Unit Tests: <CreateToken /> If wallet has insufficient XEC, renders component but does not render CreateTokenForm
CashTab Unit Tests: <CashtabTestWrapper /> With default props, renders App component
CashTab Unit Tests: <Configure /> Setting "Send Confirmations" settings will show send confirmations
CashTab Unit Tests: <Configure /> "ABSOLUTE MINIMUM fees" setting is available and effective if wallet holds exactly required balance of Cachet
CashTab Unit Tests: <Configure /> Setting "ABSOLUTE MINIMUM fees" settings will reduce fees to absolute min
CashTab Unit Tests: <Configure /> We can choose a new fiat currency
CashTab Unit Tests: <App /> Adding a contact to to a new contactList by clicking on tx history adds it to localforage and wallet context
CashTab Unit Tests: <App /> Adding a contact to an existing contactList by clicking on tx history adds it to localforage and wallet context
CashTab Unit Tests: <App /> Clicking "reply" on a Cashtab Msg correctly populates the SendXec to address and amount fields
CashTab Unit Tests: <App /> A new user can import a mnemonic of a wallet with a balance
CashTab Unit Tests: <App /> Migrating from wallet/savedWallet keys (version < 1.6.0): A user with an invalid Cashtab wallet as the active wallet is migrated on startup
CashTab Unit Tests: <App /> Migrating from wallet/savedWallet keys (version < 1.6.0): A user with pre-2.1.0 valid wallets in savedWallets has them all migrated to new storage keys and new shape
CashTab Unit Tests: <App /> Migrating (version >= 1.6.0 and < 2.1.0): A user with an invalid wallet stored at wallets key has that wallet migrated
CashTab Unit Tests: <App /> Migrating (version >= 1.6.0 and < 2.1.0): A user with multiple invalid wallets stored at wallets key has them migrated
CashTab Unit Tests: <App /> Cashtab version >= 1.6.0 and < 2.1.0: A user with an invalid Cashtab wallet as the active wallet is migrated on startup
CashTab Unit Tests: <App /> A user with all valid wallets stored at wallets key does not have any wallets migrated
CashTab Unit Tests: <App /> Migrating (version < 2.9.0): A user with multiple invalid wallets stored at wallets key has them migrated
CashTab Unit Tests: <App /> Migrating (version < 2.9.0): A user with an invalid Cashtab wallet as the active wallet is migrated on startup
CashTab Unit Tests: <SendXec /> Renders the SendXec screen with send address input
CashTab Unit Tests: <SendXec /> Pass a valid address and bip21 query string with invalid amount param (dust) to Send To field
CashTab Unit Tests: <SendXec /> Valid address with valid bip21 query string with valid amount param rejected if amount exceeds wallet balance
CashTab Unit Tests: <SendXec /> Pass a valid alias and bip21 query string with invalid amount param (too many decimals) to Send To field
CashTab Unit Tests: <SendXec /> Clicking "Send" will send a valid tx with op_return_raw after entry of a valid address and bip21 query string with valid amount and op_return_raw params to Send To field
CashTab Unit Tests: <SendXec /> We can calculate max send amount with and without a cashtab msg, and send a max sat tx with a cashtab msg
CashTab Unit Tests: <SendXec /> If the user has minFeeSends set to true but no longer has the right token amount, the feature is disabled
CashTab Unit Tests: <SendXec /> If we type a Cashtab msg, then disable the switch, we send a tx without our typed Cashtab message
CashTab Unit Tests: <SendXec /> Entering a valid bip21 query string with multiple outputs and op_return_raw will correctly populate UI fields, and the tx can be sent
if testnet --- disable price api, disable token rewards, disable xec rewards, use test ticker
cashtab/src/components/Home/Home.js | ||
---|---|---|
286 ↗ | (On Diff #50083) | do not show xec or cachet rewards on new wallet creation for testnet |
cashtab/src/components/Receive/Receive.js | ||
58 ↗ | (On Diff #50083) | wallet address ectest if testnet |
cashtab/src/components/Rewards/index.js | ||
173 ↗ | (On Diff #50083) | do not show token rewards if testnet |
cashtab/src/config/app.js | ||
11 ↗ | (On Diff #50083) | modified ticker for testnet |
cashtab/src/config/chronik.js | ||
10 ↗ | (On Diff #50083) | array of testnet chronik urls |
cashtab/src/wallet/useWallet.js | ||
721 ↗ | (On Diff #50083) | we do not bother with a periodic exchange rate update if testnet. hardcode 0 |
The address handling seems incomplete but otherwise looks ok
cashtab/src/components/Receive/Receive.js | ||
---|---|---|
58 ↗ | (On Diff #50083) | This is not enough here, e.g. the copy address button still shows the ecash: prefix.
This way you avoid duplicated code and it's easier to add missing conversions when noticed. |
cashtab/src/config/app.js | ||
14 ↗ | (On Diff #50083) | Unrelated: is that still in use anywhere ? |
cashtab/src/config/chronik.js | ||
12 ↗ | (On Diff #50083) | Unrelated: please use ours first (or even only ours) |
cashtab/src/config/app.js | ||
---|---|---|
14 ↗ | (On Diff #50083) | no; renamed 'prefix' and used in this diff as ecash or ectest |
cashtab/.env | ||
---|---|---|
3 ↗ | (On Diff #50109) | Wouldn't it make more sense to have a REACT_APP_NETWORK: 'main' | 'test' variable, such that we can add support for e.g. regtest in the future? |
cashtab/.env | ||
---|---|---|
3 ↗ | (On Diff #50109) | It's a good idea. Can be a follow up so we don't have to review this diff again |