diff --git a/frontend/cypress/e2e/mainnet/mainnet.spec.ts b/frontend/cypress/e2e/mainnet/mainnet.spec.ts index 3319b4835..da9e00b9f 100644 --- a/frontend/cypress/e2e/mainnet/mainnet.spec.ts +++ b/frontend/cypress/e2e/mainnet/mainnet.spec.ts @@ -504,9 +504,17 @@ describe('Mainnet', () => { describe('RBF transactions', () => { it('shows RBF transactions properly (mobile)', () => { + cy.intercept('/api/v1/tx/21518a98d1aa9df524865d2f88c578499f524eb1d0c4d3e70312ab863508692f/cached', { + fixture: 'mainnet_tx_cached.json' + }).as('cached_tx'); + + cy.intercept('/api/v1/tx/f81a08699b62b2070ad8fe0f2a076f8bea0386a2fdcd8124caee42cbc564a0d5/rbf', { + fixture: 'mainnet_rbf_new.json' + }).as('rbf'); + cy.viewport('iphone-xr'); cy.mockMempoolSocket(); - cy.visit('/tx/f81a08699b62b2070ad8fe0f2a076f8bea0386a2fdcd8124caee42cbc564a0d5'); + cy.visit('/tx/21518a98d1aa9df524865d2f88c578499f524eb1d0c4d3e70312ab863508692f'); cy.waitForSkeletonGone(); @@ -524,22 +532,30 @@ describe('Mainnet', () => { } }); - cy.get('.alert-mempool').should('be.visible'); - cy.get('.alert-mempool').invoke('css', 'width').then((alertWidth) => { + cy.get('.alert').should('be.visible'); + cy.get('.alert').invoke('css', 'width').then((alertWidth) => { cy.get('.container-xl > :nth-child(3)').invoke('css', 'width').should('equal', alertWidth); }); - cy.get('.btn-success').then(getRectangle).then((rectA) => { - cy.get('.alert-mempool').then(getRectangle).then((rectB) => { + cy.get('.btn-danger').then(getRectangle).then((rectA) => { + cy.get('.alert').then(getRectangle).then((rectB) => { expect(areOverlapping(rectA, rectB), 'Confirmations box and RBF alert are overlapping').to.be.false; }); }); }); it('shows RBF transactions properly (desktop)', () => { + cy.intercept('/api/v1/tx/21518a98d1aa9df524865d2f88c578499f524eb1d0c4d3e70312ab863508692f/cached', { + fixture: 'mainnet_tx_cached.json' + }).as('cached_tx'); + + cy.intercept('/api/v1/tx/f81a08699b62b2070ad8fe0f2a076f8bea0386a2fdcd8124caee42cbc564a0d5/rbf', { + fixture: 'mainnet_rbf_new.json' + }).as('rbf'); + cy.viewport('macbook-16'); cy.mockMempoolSocket(); - cy.visit('/tx/f81a08699b62b2070ad8fe0f2a076f8bea0386a2fdcd8124caee42cbc564a0d5'); + cy.visit('/tx/21518a98d1aa9df524865d2f88c578499f524eb1d0c4d3e70312ab863508692f'); cy.waitForSkeletonGone(); @@ -557,17 +573,17 @@ describe('Mainnet', () => { } }); - cy.get('.alert-mempool').should('be.visible'); + cy.get('.alert').should('be.visible'); - const alertLocator = '.alert-mempool'; + const alertLocator = '.alert'; const tableLocator = '.container-xl > :nth-child(3)'; cy.get(tableLocator).invoke('css', 'width').then((firstWidth) => { cy.get(alertLocator).invoke('css', 'width').should('equal', firstWidth); }); - cy.get('.btn-success').then(getRectangle).then((rectA) => { - cy.get('.alert-mempool').then(getRectangle).then((rectB) => { + cy.get('.btn-danger').then(getRectangle).then((rectA) => { + cy.get('.alert').then(getRectangle).then((rectB) => { expect(areOverlapping(rectA, rectB), 'Confirmations box and RBF alert are overlapping').to.be.false; }); }); diff --git a/frontend/cypress/fixtures/mainnet_rbf.json b/frontend/cypress/fixtures/mainnet_rbf.json index 50dbbb2df..4ff9aba7f 100644 --- a/frontend/cypress/fixtures/mainnet_rbf.json +++ b/frontend/cypress/fixtures/mainnet_rbf.json @@ -47,6 +47,8 @@ "size": 372, "weight": 828, "fee": 1.5, - "status": { "confirmed": false } + "status": { + "confirmed": false + } } -} \ No newline at end of file +} diff --git a/frontend/cypress/fixtures/mainnet_rbf_new.json b/frontend/cypress/fixtures/mainnet_rbf_new.json new file mode 100644 index 000000000..2b23db4db --- /dev/null +++ b/frontend/cypress/fixtures/mainnet_rbf_new.json @@ -0,0 +1,31 @@ +{ + "replacements": { + "tx": { + "txid": "f22735aaa8eb84bcae3e7705f78609c6f5f0cd7dfc34ae03094e61f2dab0cc64", + "fee": 13843, + "vsize": 109.25, + "value": 253003805, + "rate": 36.04666732302845, + "rbf": true + }, + "time": 1683865345, + "fullRbf": false, + "replaces": [ + { + "tx": { + "txid": "21518a98d1aa9df524865d2f88c578499f524eb1d0c4d3e70312ab863508692f", + "fee": 8794, + "vsize": 109.25, + "value": 253008854, + "rate": 35.05247612484001, + "rbf": true + }, + "time": 1683864993, + "interval": 352, + "fullRbf": false, + "replaces": [] + } + ] + }, + "replaces": null +} diff --git a/frontend/cypress/fixtures/mainnet_tx_cached.json b/frontend/cypress/fixtures/mainnet_tx_cached.json new file mode 100644 index 000000000..f4e4338a4 --- /dev/null +++ b/frontend/cypress/fixtures/mainnet_tx_cached.json @@ -0,0 +1,60 @@ +{ + "vsize": 109, + "feePerVsize": 80.49427917620137, + "effectiveFeePerVsize": 35.05247612484001, + "txid": "21518a98d1aa9df524865d2f88c578499f524eb1d0c4d3e70312ab863508692f", + "version": 2, + "locktime": 0, + "vin": [ + { + "txid": "1e3bd5c634781a6ba8bb3d3385b14739bf38cad5332d5fbc5c0ab775e54b9aef", + "vout": 144, + "prevout": { + "scriptpubkey": "0014d98654186b90d95da7e31a30929f5b5b6a0af250", + "scriptpubkey_asm": "OP_0 OP_PUSHBYTES_20 d98654186b90d95da7e31a30929f5b5b6a0af250", + "scriptpubkey_type": "v0_p2wpkh", + "scriptpubkey_address": "bc1qmxr9gxrtjrv4mflrrgcf986mtd4q4ujss432tk", + "value": 253017648 + }, + "scriptsig": "", + "scriptsig_asm": "", + "witness": [ + "30440220448e8f58fcdea87c1969d58438b49da5b43712380bc4c68b02d22cf6b164907302207b2ed660f1a5b3b74f712961ffb3f3a7d1ac6e48b269ea6ff15df985042211f301", + "02e39a1f3583e382cec1a1fab6a3f5950b6403c953fada58d809127a497f502ebe" + ], + "is_coinbase": false, + "sequence": 4294967293 + } + ], + "vout": [ + { + "scriptpubkey": "0014edb5167da7e97c73d7931eb2130ac3e34e6845a9", + "scriptpubkey_asm": "OP_0 OP_PUSHBYTES_20 edb5167da7e97c73d7931eb2130ac3e34e6845a9", + "scriptpubkey_type": "v0_p2wpkh", + "scriptpubkey_address": "bc1qak63vld8a97884unr6epxzkrud8xs3dfdqswy2", + "value": 253008854 + } + ], + "size": 191, + "weight": 437, + "fee": 8794, + "status": { + "confirmed": false + }, + "firstSeen": 1683864993, + "uid": 298353, + "position": { + "block": 0, + "vsize": 886207.5 + }, + "cpfpChecked": true, + "ancestors": [ + { + "txid": "1e3bd5c634781a6ba8bb3d3385b14739bf38cad5332d5fbc5c0ab775e54b9aef", + "fee": 169220, + "weight": 19877 + } + ], + "descendants": [], + "bestDescendant": null +}