diff --git a/apps/token-e2e/src/integration/flow/governance-flow.cy.js b/apps/token-e2e/src/integration/flow/governance-flow.cy.js index 82c700536..8b8a8ab74 100644 --- a/apps/token-e2e/src/integration/flow/governance-flow.cy.js +++ b/apps/token-e2e/src/integration/flow/governance-flow.cy.js @@ -29,7 +29,7 @@ const voteButtons = '[data-testid="vote-buttons"]'; const votingDate = '[data-testid="voting-date"]'; const voteTwoMinExtraNote = '[data-testid="voting-2-mins-extra"]'; const voteStatus = '[data-testid="vote-status"]'; -const rejectProposalsLink = '[href="/governance/rejected"]'; +const rejectProposalsLink = '[href="/proposals/rejected"]'; const feedbackError = '[data-testid="Error"]'; const noOpenProposals = '[data-testid="no-open-proposals"]'; const noClosedProposals = '[data-testid="no-closed-proposals"]'; @@ -123,6 +123,8 @@ context( parseInt(this.minCloseDays + 1), 'Asserting that network parameter maxCloseDays is at least 1 day higher than minCloseDays' ); + // workaround for first eth tx hanging + associateTokenStartOfTests(); } ); @@ -132,7 +134,6 @@ context( cy.connectVegaWallet(); cy.ethereum_wallet_connect(); cy.navigate_to('proposals'); - cy.wait_for_spinner(); }); it('Should be able to see that no proposals exist', function () { @@ -207,7 +208,6 @@ context( let arrayOfProposals = []; cy.navigate_to('proposals'); - cy.wait_for_spinner(); cy.get(proposalDetailsTitle) .each((proposalTitleElement) => { arrayOfProposals.push(proposalTitleElement.text()); @@ -225,14 +225,12 @@ context( cy.navigate_to_page_if_not_already_loaded('proposals'); cy.get(vegaWalletUnstakedBalance, txTimeout).should('contain', '2'); cy.navigate_to('validators'); - cy.wait_for_spinner(); cy.click_on_validator_from_list(0); cy.staking_validator_page_add_stake('2'); cy.get(vegaWalletStakedBalances, txTimeout).should('contain', '2'); cy.navigate_to('proposals'); - cy.wait_for_spinner(); cy.go_to_make_new_proposal(governanceProposalType.FREEFORM); cy.enter_unique_freeform_proposal_body('50', generateProposalTitle()); cy.get(newProposalSubmitButton).should('be.visible').click(); @@ -327,7 +325,6 @@ context( .contains('👍') .should('be.visible'); cy.navigate_to('proposals'); - cy.wait_for_spinner(); cy.get('@submittedProposal').within(() => cy.get(voteStatus).should('have.text', 'Participation met') ); @@ -378,7 +375,6 @@ context( cy.wait_for_proposal_submitted(); cy.wait_for_proposal_sync(); cy.navigate_to('proposals'); - cy.wait_for_spinner(); cy.get_submitted_proposal_from_proposal_list(proposalTitle).within( () => cy.get(viewProposalButton).click() ); @@ -485,7 +481,6 @@ context( cy.get_proposal_information_from_table('Tokens for proposal') .should('have.text', parseFloat(this.minProposerBalance).toFixed(2)) .and('be.visible'); - cy.wait_for_spinner(); cy.get(changeVoteButton).should('be.visible').click(); cy.vote_for_proposal('against'); cy.get(proposalVoteProgressAgainstPercentage) @@ -611,8 +606,7 @@ context( cy.get(dialogCloseButton).click(); cy.wait_for_proposal_sync(); cy.navigate_to('proposals'); - cy.wait_for_spinner(); - cy.get(rejectProposalsLink).click().wait_for_spinner(); + cy.get(rejectProposalsLink).click(); cy.get('@rawProposal').then((rawProposal) => { cy.get_submitted_proposal_from_proposal_list( rawProposal.rationale.title @@ -650,7 +644,7 @@ context( cy.contains('Transaction failed', proposalTimeout).should('be.visible'); cy.get(feedbackError).should( 'have.text', - 'party has insufficient associated governance tokens in their staking account to submit proposal request' + 'Network error: the network blocked the transaction through the spam protection' ); cy.get(dialogCloseButton).click(); }); @@ -669,7 +663,7 @@ context( cy.contains('Transaction failed', proposalTimeout).should('be.visible'); cy.get(feedbackError).should( 'have.text', - 'party has insufficient associated governance tokens in their staking account to submit proposal request' + 'Network error: the network blocked the transaction through the spam protection' ); cy.get(dialogCloseButton).click(); }); @@ -698,7 +692,7 @@ context( cy.contains('Transaction failed', proposalTimeout).should('be.visible'); cy.get(feedbackError).should( 'have.text', - '*: unknown field "unexpected" in vega.commands.v1.ProposalSubmission' + 'Invalid params: the transaction is malformed' ); cy.get(dialogCloseButton).click(); }); @@ -728,48 +722,50 @@ context( cy.contains('Transaction failed', proposalTimeout).should('be.visible'); cy.get(feedbackError).should( 'have.text', - '*: unknown field "unexpectedField" in vega.ProposalTerms' + 'Invalid params: the transaction is malformed' ); cy.get(dialogCloseButton).click(); }); // 1005-PROP-009 - it('Unable to vote on a freeform proposal - when some but not enough vega associated', function () { - const proposalTitle = generateProposalTitle(); + it( + 'Unable to vote on a freeform proposal - when some but not enough vega associated', + { tags: '@smoke' }, + function () { + const proposalTitle = generateProposalTitle(); - cy.ensure_specified_unstaked_tokens_are_associated( - this.minProposerBalance - ); - cy.go_to_make_new_proposal(governanceProposalType.FREEFORM); - cy.enter_unique_freeform_proposal_body('50', proposalTitle); - cy.get(newProposalSubmitButton).should('be.visible').click(); - cy.wait_for_proposal_submitted(); - cy.wait_for_proposal_sync(); - cy.staking_page_disassociate_tokens('0.0001'); - cy.get(vegaWallet).within(() => { - cy.get(vegaWalletAssociatedBalance, txTimeout).should( - 'contain', - '0.9999' + cy.ensure_specified_unstaked_tokens_are_associated( + this.minProposerBalance ); - }); - cy.navigate_to('governance'); - cy.wait_for_spinner(); - cy.get_submitted_proposal_from_proposal_list(proposalTitle).within(() => - cy.get(viewProposalButton).click() - ); - cy.contains('Vote breakdown').should('be.visible', { - timeout: 10000, - }); - cy.get(voteButtons).should('not.exist'); - cy.getByTestId('min-proposal-requirements').should( - 'have.text', - `You must have at least ${this.minVoterBalance} VEGA associated to vote on this proposal` - ); - }); + cy.go_to_make_new_proposal(governanceProposalType.FREEFORM); + cy.enter_unique_freeform_proposal_body('50', proposalTitle); + cy.get(newProposalSubmitButton).should('be.visible').click(); + cy.wait_for_proposal_submitted(); + cy.wait_for_proposal_sync(); + cy.staking_page_disassociate_tokens('0.0001'); + cy.get(vegaWallet).within(() => { + cy.get(vegaWalletAssociatedBalance, txTimeout).should( + 'contain', + '0.9999' + ); + }); + cy.navigate_to('proposals'); + cy.get_submitted_proposal_from_proposal_list(proposalTitle).within( + () => cy.get(viewProposalButton).click() + ); + cy.contains('Vote breakdown').should('be.visible', { + timeout: 10000, + }); + cy.get(voteButtons).should('not.exist'); + cy.getByTestId('min-proposal-requirements').should( + 'have.text', + `You must have at least ${this.minVoterBalance} VEGA associated to vote on this proposal` + ); + } + ); it('Unable to vote on a proposal - when vega wallet disconnected - option to connect from within', function () { createRawProposal(this.minProposerBalance); - cy.wait_for_spinner(); cy.get('[data-testid="manage-vega-wallet"]').click(); cy.get('[data-testid="disconnect"]').click(); cy.get('@rawProposal').then((rawProposal) => { @@ -809,7 +805,6 @@ context( cy.wait_for_proposal_submitted(); cy.wait_for_proposal_sync(); cy.navigate_to('proposals'); - cy.wait_for_spinner(); } function createFreeformProposal(proposerBalance, proposalTitle) { @@ -821,13 +816,41 @@ context( cy.wait_for_proposal_sync(); cy.get(proposalDetailsTitle).invoke('text').as('proposalTitle'); cy.navigate_to('proposals'); - cy.wait_for_spinner(); } function generateProposalTitle() { const randomNum = Math.floor(Math.random() * 1000) + 1; return randomNum + ': Freeform e2e proposal'; } + + // This is a workaround function to begin tests with associating tokens without failing + // Should be removed when eth transaction bug is fixed + function associateTokenStartOfTests() { + cy.highlight(`Associating tokens for first time`); + cy.ethereum_wallet_connect(); + cy.connectVegaWallet(); + cy.get('[href="/validators/associate"]').first().click(); + cy.getByTestId('associate-radio-wallet', { timeout: 30000 }).click(); + cy.getByTestId('token-amount-input', epochTimeout).type('1'); + cy.getByTestId('token-input-submit-button', txTimeout) + .should('be.enabled') + .click(); + cy.contains( + `Associating with Vega key. Waiting for ${Cypress.env( + 'blockConfirmations' + )} more confirmations..`, + txTimeout + ).should('be.visible'); + cy.getByTestId('associated-amount', txTimeout).should( + 'contain.text', + '1' + ); + // Wait is needed to allow time for transaction to complete + // eslint-disable-next-line cypress/no-unnecessary-waiting + cy.wait(10000); + cy.vega_wallet_teardown(); + cy.clearLocalStorage(); + } }); } ); diff --git a/apps/token-e2e/src/integration/flow/governance-forms-flow.cy.js b/apps/token-e2e/src/integration/flow/governance-forms-flow.cy.js index 656d8ac47..17055c74f 100644 --- a/apps/token-e2e/src/integration/flow/governance-forms-flow.cy.js +++ b/apps/token-e2e/src/integration/flow/governance-forms-flow.cy.js @@ -50,7 +50,6 @@ context( cy.connectVegaWallet(); cy.ethereum_wallet_connect(); cy.navigate_to('proposals'); - cy.wait_for_spinner(); }); it('Able to submit valid update network parameter proposal', function () { @@ -61,7 +60,7 @@ context( // 3002-PROP-007 cy.get(newProposalDescription).type('E2E test for proposals'); - cy.get(proposalParameterSelect).find('option').should('have.length', 109); + cy.get(proposalParameterSelect).find('option').should('have.length', 114); cy.get(proposalParameterSelect).select( // 3007-PNEC-002 'governance_proposal_asset_minEnact' diff --git a/apps/token-e2e/src/integration/flow/staking-flow.cy.js b/apps/token-e2e/src/integration/flow/staking-flow.cy.js index 6ee9d3588..d2711be24 100644 --- a/apps/token-e2e/src/integration/flow/staking-flow.cy.js +++ b/apps/token-e2e/src/integration/flow/staking-flow.cy.js @@ -46,7 +46,6 @@ context( cy.ethereum_wallet_connect(); cy.vega_wallet_teardown(); cy.navigate_to('validators'); - cy.wait_for_spinner(); } ); @@ -97,7 +96,11 @@ context( cy.navigate_to('validators'); // 2002-SINC-007 - cy.validate_validator_list_total_stake_and_share('0', '2.00', '100%'); + cy.validate_validator_list_total_stake_and_share( + '0', + '2.00', + '100.00%' + ); }); it('Able to stake against a validator - using vega from vesting contract', function () { @@ -144,7 +147,11 @@ context( cy.navigate_to('validators'); - cy.validate_validator_list_total_stake_and_share('0', '2.00', '100%'); + cy.validate_validator_list_total_stake_and_share( + '0', + '2.00', + '100.00%' + ); }); it('Able to stake against a validator - using vega from both wallet and vesting contract', function () { @@ -204,7 +211,11 @@ context( cy.navigate_to('validators'); - cy.validate_validator_list_total_stake_and_share('0', '6.00', '100%'); + cy.validate_validator_list_total_stake_and_share( + '0', + '6.00', + '100.00%' + ); }); it('Able to stake against multiple validators', function () { @@ -254,7 +265,6 @@ context( .should('contain', 1.0, txTimeout); cy.navigate_to('validators'); - cy.wait_for_spinner(); cy.get(`[row-id="${0}"]`).within(() => { cy.get(stakeValidatorListTotalStake) @@ -285,68 +295,76 @@ context( }); // 2001-STKE-041 - it('Able to remove part of a stake against a validator', function () { - cy.staking_page_associate_tokens('4'); + it( + 'Able to remove part of a stake against a validator', + { tags: '@smoke' }, + function () { + cy.staking_page_associate_tokens('4'); - cy.get(vegaWalletUnstakedBalance, txTimeout).should( - 'contain', - 4.0, - txTimeout - ); + cy.get(vegaWalletUnstakedBalance, txTimeout).should( + 'contain', + 4.0, + txTimeout + ); - cy.get('button').contains('Select a validator to nominate').click(); + cy.get('button').contains('Select a validator to nominate').click(); - cy.click_on_validator_from_list(0); + cy.click_on_validator_from_list(0); - cy.staking_validator_page_add_stake('3'); + cy.staking_validator_page_add_stake('3'); - cy.get(stakeNextEpochValue, epochTimeout) - .contains(3.0, epochTimeout) - .should('be.visible'); + cy.get(stakeNextEpochValue, epochTimeout) + .contains(3.0, epochTimeout) + .should('be.visible'); - cy.get(vegaWalletUnstakedBalance, txTimeout).should( - 'contain', - 1.0, - txTimeout - ); + cy.get(vegaWalletUnstakedBalance, txTimeout).should( + 'contain', + 1.0, + txTimeout + ); - cy.navigate_to('validators'); - // 2001-STKE-040 - cy.click_on_validator_from_list(0); + cy.navigate_to('validators'); + // 2001-STKE-040 + cy.click_on_validator_from_list(0); - // 2001-STKE-044, 2001-STKE-048 - cy.staking_validator_page_remove_stake('1'); + // 2001-STKE-044, 2001-STKE-048 + cy.staking_validator_page_remove_stake('1'); - // 2001-STKE-049 - cy.get(stakeNextEpochValue, epochTimeout).contains(2.0, epochTimeout); + // 2001-STKE-049 + cy.get(stakeNextEpochValue, epochTimeout).contains(2.0, epochTimeout); - cy.get(vegaWalletUnstakedBalance, txTimeout).should( - 'contain', - 2.0, - txTimeout - ); + cy.get(vegaWalletUnstakedBalance, txTimeout).should( + 'contain', + 2.0, + txTimeout + ); - cy.get(vegaWalletStakedBalances, txTimeout).should( - 'contain', - 2.0, - txTimeout - ); + cy.get(vegaWalletStakedBalances, txTimeout).should( + 'contain', + 2.0, + txTimeout + ); - cy.get(stakeNextEpochValue, epochTimeout) - .contains(2.0, epochTimeout) - .should('be.visible'); + cy.get(stakeNextEpochValue, epochTimeout) + .contains(2.0, epochTimeout) + .should('be.visible'); - cy.get(stakeThisEpochValue, epochTimeout) - .contains(2.0, epochTimeout) - .should('be.visible'); + cy.get(stakeThisEpochValue, epochTimeout) + .contains(2.0, epochTimeout) + .should('be.visible'); - cy.get(totalStake, epochTimeout).should('contain.text', '2'); - cy.get(stakeShare, epochTimeout).should('have.text', '100%'); + cy.get(totalStake, epochTimeout).should('contain.text', '2'); + cy.get(stakeShare, epochTimeout).should('have.text', '100%'); - cy.navigate_to('validators'); + cy.navigate_to('validators'); - cy.validate_validator_list_total_stake_and_share('0', '2.00', '100%'); - }); + cy.validate_validator_list_total_stake_and_share( + '0', + '2.00', + '100.00%' + ); + } + ); // 2001-STKE-045 it('Able to remove a full stake against a validator', function () { @@ -401,7 +419,7 @@ context( cy.navigate_to('validators'); - cy.validate_validator_list_total_stake_and_share('0', '0.00', '0%'); + cy.validate_validator_list_total_stake_and_share('0', '0.00', '0.00%'); }); it('Unable to remove a stake with a negative value for a validator', function () { @@ -538,7 +556,7 @@ context( cy.navigate_to('validators'); - cy.validate_validator_list_total_stake_and_share('0', '0.00', '0%'); + cy.validate_validator_list_total_stake_and_share('0', '0.00', '0.00%'); }); it('Disassociating all vesting contract tokens max - removes all staked tokens', function () { @@ -592,7 +610,7 @@ context( cy.navigate_to('validators'); - cy.validate_validator_list_total_stake_and_share('0', '0.00', '0%'); + cy.validate_validator_list_total_stake_and_share('0', '0.00', '0.00%'); }); it('Disassociating some tokens - prioritizes unstaked tokens', function () { @@ -639,7 +657,11 @@ context( cy.navigate_to('validators'); - cy.validate_validator_list_total_stake_and_share('0', '2.00', '100%'); + cy.validate_validator_list_total_stake_and_share( + '0', + '2.00', + '100.00%' + ); }); it('Associating wallet tokens - when some already staked - auto stakes tokens to staked validator', function () { diff --git a/apps/token-e2e/src/integration/flow/token-association-flow.cy.js b/apps/token-e2e/src/integration/flow/token-association-flow.cy.js index 506d90aeb..244603756 100644 --- a/apps/token-e2e/src/integration/flow/token-association-flow.cy.js +++ b/apps/token-e2e/src/integration/flow/token-association-flow.cy.js @@ -15,8 +15,8 @@ const ethWalletDissociateButton = '[href="/validators/disassociate"]'; const vestingContractSection = '[data-testid="vega-in-vesting-contract"]'; const vegaInWalletSection = '[data-testid="vega-in-wallet"]'; const connectedVegaKey = '[data-testid="connected-vega-key"]'; -const associatedKey = '[data-test-id="associated-key"]'; -const associatedAmount = '[data-test-id="associated-amount"]'; +const associatedKey = '[data-testid="associated-key"]'; +const associatedAmount = '[data-testid="associated-amount"]'; const associateCompleteText = '[data-testid="transaction-complete-body"]'; const disassociationWarning = '[data-testid="disassociation-warning"]'; const vegaWallet = '[data-testid="vega-wallet"]'; @@ -41,7 +41,6 @@ context( cy.ethereum_wallet_connect(); cy.vega_wallet_teardown(); cy.navigate_to('validators'); - cy.wait_for_spinner(); } ); diff --git a/apps/token-e2e/src/integration/flow/withdrawal-flow.cy.js b/apps/token-e2e/src/integration/flow/withdrawal-flow.cy.js index b98fc5d0e..03daa16c4 100644 --- a/apps/token-e2e/src/integration/flow/withdrawal-flow.cy.js +++ b/apps/token-e2e/src/integration/flow/withdrawal-flow.cy.js @@ -34,7 +34,6 @@ context( cy.reload(); cy.visit('/'); cy.navigate_to('withdraw'); - cy.wait_for_spinner(); cy.connectVegaWallet(); cy.ethereum_wallet_connect(); cy.vega_wallet_teardown(); diff --git a/apps/token-e2e/src/integration/view/staking.cy.js b/apps/token-e2e/src/integration/view/staking.cy.js index c99e52252..5d1fb79ca 100644 --- a/apps/token-e2e/src/integration/view/staking.cy.js +++ b/apps/token-e2e/src/integration/view/staking.cy.js @@ -100,7 +100,7 @@ context('Staking Page - verify elements on page', function () { // 2001-STKE-050 describe( 'Should be able to see static information about a validator', - { tags: '@slow' }, + { tags: '@smoke' }, function () { before('connect wallets and click on validator', function () { cy.connectVegaWallet(); diff --git a/apps/token-e2e/src/integration/view/wallet-vega.cy.js b/apps/token-e2e/src/integration/view/wallet-vega.cy.js index 29b33ae45..1e991a41a 100644 --- a/apps/token-e2e/src/integration/view/wallet-vega.cy.js +++ b/apps/token-e2e/src/integration/view/wallet-vega.cy.js @@ -299,7 +299,7 @@ context( }); // 2002-SINC-016 - describe.skip('when assets exist in vegawallet', function () { + describe('when assets exist in vegawallet', function () { before('send-faucet assets to connected vega wallet', function () { cy.vega_wallet_faucet_assets_without_check( faucetAssets.USDCFake, diff --git a/apps/token-e2e/src/support/common.functions.js b/apps/token-e2e/src/support/common.functions.js index da0c1ef62..20b21efdc 100644 --- a/apps/token-e2e/src/support/common.functions.js +++ b/apps/token-e2e/src/support/common.functions.js @@ -34,5 +34,6 @@ Cypress.Commands.add('verify_page_header', (text) => { }); Cypress.Commands.add('wait_for_spinner', () => { + cy.get(navigation.pageSpinner).should('exist'); cy.get(navigation.pageSpinner, { timeout: 20000 }).should('not.exist'); }); diff --git a/apps/token-e2e/src/support/governance.functions.js b/apps/token-e2e/src/support/governance.functions.js index 0060a2e3f..acfae0278 100644 --- a/apps/token-e2e/src/support/governance.functions.js +++ b/apps/token-e2e/src/support/governance.functions.js @@ -154,7 +154,6 @@ Cypress.Commands.add('navigate_to_page_if_not_already_loaded', (section) => { cy.url().then((url) => { if (url != `http://localhost:4210/${section}`) { cy.navigate_to(section); - cy.wait_for_spinner(); } }); }); @@ -175,7 +174,6 @@ Cypress.Commands.add('go_to_make_new_proposal', (proposalType) => { cy.navigate_to_page_if_not_already_loaded('proposals'); cy.get(newProposalButton).should('be.visible').click(); cy.url().should('include', '/proposals/propose'); - cy.wait_for_spinner(); cy.get('li').contains(proposalType).click(); }); diff --git a/apps/token-e2e/src/support/staking.functions.js b/apps/token-e2e/src/support/staking.functions.js index c1197fd16..646d174a6 100644 --- a/apps/token-e2e/src/support/staking.functions.js +++ b/apps/token-e2e/src/support/staking.functions.js @@ -31,7 +31,6 @@ Cypress.Commands.add('wait_for_beginning_of_epoch', () => { Cypress.Commands.add('staking_validator_page_add_stake', (stake) => { cy.highlight(`Adding a stake of ${stake}`); - cy.wait_for_spinner(); cy.get(addStakeRadioButton, epochTimeout).click({ force: true }); cy.get(tokenAmountInputBox).type(stake); cy.wait_for_beginning_of_epoch(); @@ -44,7 +43,6 @@ Cypress.Commands.add('staking_validator_page_add_stake', (stake) => { Cypress.Commands.add('staking_validator_page_remove_stake', (stake) => { cy.highlight(`Removing a stake of ${stake}`); - cy.wait_for_spinner(); cy.get(removeStakeRadioButton, epochTimeout).click(); cy.get(tokenAmountInputBox).type(stake); cy.wait_for_beginning_of_epoch(); @@ -83,7 +81,7 @@ Cypress.Commands.add('staking_page_associate_tokens', (amount, options) => { `Associating with Vega key. Waiting for ${Cypress.env( 'blockConfirmations' )} more confirmations..`, - epochTimeout + txTimeout ).should('be.visible'); cy.contains( 'can now participate in governance and nominate a validator', @@ -148,7 +146,6 @@ Cypress.Commands.add( Cypress.Commands.add( 'click_on_validator_from_list', (validatorNumber, validatorName = null) => { - cy.wait_for_spinner(); cy.contains('Loading...', epochTimeout).should('not.exist'); cy.wait_for_beginning_of_epoch(); // below is to ensure validator list is shown @@ -171,7 +168,6 @@ Cypress.Commands.add( Cypress.Commands.add( 'validate_validator_list_total_stake_and_share', (positionOnList, expectedTotalStake, expectedTotalShare) => { - cy.wait_for_spinner(); cy.contains('Loading...', epochTimeout).should('not.exist'); cy.wait_for_beginning_of_epoch(); cy.get(`[row-id="${positionOnList}"]`).within(() => { diff --git a/apps/token-e2e/src/support/wallet-teardown.functions.js b/apps/token-e2e/src/support/wallet-teardown.functions.js index cda55c4f5..bdf3c6ba2 100644 --- a/apps/token-e2e/src/support/wallet-teardown.functions.js +++ b/apps/token-e2e/src/support/wallet-teardown.functions.js @@ -101,7 +101,7 @@ Cypress.Commands.add('vega_wallet_teardown', function () { cy.vega_wallet_teardown_staking(this.stakingBridgeContract); } }); - cy.get('[data-test-id="associated-amount"]', { timeout: 30000 }).should( + cy.get('[data-testid="associated-amount"]', { timeout: 30000 }).should( 'contain.text', '0.00' ); diff --git a/apps/token/src/components/wallet-card/wallet-card.tsx b/apps/token/src/components/wallet-card/wallet-card.tsx index bbccd984e..aa8b06e5f 100644 --- a/apps/token/src/components/wallet-card/wallet-card.tsx +++ b/apps/token/src/components/wallet-card/wallet-card.tsx @@ -66,14 +66,14 @@ export const WalletCardRow = ({ {label} ) : ( - + {label} )} {value && ( {integers}. {decimalsPlaces} diff --git a/apps/token/src/routes/tranches/tranche.tsx b/apps/token/src/routes/tranches/tranche.tsx index 7a2b59f25..cd8aeee5a 100644 --- a/apps/token/src/routes/tranches/tranche.tsx +++ b/apps/token/src/routes/tranches/tranche.tsx @@ -60,7 +60,7 @@ export const Tranche = () => { />
{t('alreadyRedeemed')} {formatNumber(tranche.total_removed)}