* test: staking validation tests * chore: standardise codes * chore: standardise codes * test: additional ACs added and view tests mostly done * chore: update codes * test: staking tests passing * chore: remove comments and formatting * test: fix staking view tests * fix: empty string assertion * fix: lint * chore: remove unnecessary assertions Co-authored-by: Edd <edd@vega.xyz>
132 lines
4.8 KiB
JavaScript
132 lines
4.8 KiB
JavaScript
const tokenAmountInputBox = '[data-testid="token-amount-input"]';
|
|
const tokenSubmitButton = '[data-testid="token-input-submit-button"]';
|
|
const tokenInputApprove = '[data-testid="token-input-approve-button"]';
|
|
const addStakeRadioButton = '[data-testid="add-stake-radio"]';
|
|
const removeStakeRadioButton = '[data-testid="remove-stake-radio"]';
|
|
const ethWalletAssociateButton = '[href="/staking/associate"]';
|
|
const ethWalletDissociateButton = '[href="/staking/disassociate"]';
|
|
const associateWalletRadioButton = '[data-testid="associate-radio-wallet"]';
|
|
const stakeMaximumTokens = '[data-testid="token-amount-use-maximum"]';
|
|
const stakeValidatorListPendingStake = '[col-id="pendingStake"]';
|
|
const stakeValidatorListTotalStake = '[col-id="totalStakeThisEpoch"]';
|
|
const stakeValidatorListTotalShare = '[col-id="share"]';
|
|
const stakeValidatorListName = '[col-id="validator"]';
|
|
const txTimeout = Cypress.env('txTimeout');
|
|
|
|
Cypress.Commands.add('wait_for_begining_of_epoch', () => {
|
|
cy.contains('Waiting for next epoch to start', { timeout: 10000 }).should(
|
|
'not.exist'
|
|
);
|
|
cy.contains('Waiting for next epoch to start', { timeout: 20000 });
|
|
});
|
|
|
|
Cypress.Commands.add('staking_validator_page_add_stake', (stake) => {
|
|
cy.highlight(`Adding a stake of ${stake}`);
|
|
cy.get(addStakeRadioButton).click({ force: true });
|
|
cy.get(tokenAmountInputBox).type(stake);
|
|
cy.wait_for_begining_of_epoch();
|
|
cy.get(tokenSubmitButton, { timeout: 8000 })
|
|
.should('be.enabled')
|
|
.and('contain', `Add ${stake} $VEGA tokens`)
|
|
.and('be.visible')
|
|
.click();
|
|
});
|
|
|
|
Cypress.Commands.add('staking_validator_page_remove_stake', (stake) => {
|
|
cy.highlight(`Removing a stake of ${stake}`);
|
|
cy.get(removeStakeRadioButton).click();
|
|
cy.get(tokenAmountInputBox).type(stake);
|
|
cy.wait_for_begining_of_epoch();
|
|
cy.get(tokenSubmitButton)
|
|
.should('be.enabled', { timeout: 8000 })
|
|
.and('contain', `Remove ${stake} $VEGA tokens at the end of epoch`)
|
|
.and('be.visible')
|
|
.click();
|
|
});
|
|
|
|
Cypress.Commands.add(
|
|
'staking_page_associate_tokens',
|
|
(amount, approve = false) => {
|
|
cy.highlight(`Associating ${amount} tokens`);
|
|
cy.get(ethWalletAssociateButton).first().click();
|
|
cy.get(associateWalletRadioButton, { timeout: 30000 }).click();
|
|
cy.get(tokenAmountInputBox, { timeout: 10000 }).type(amount);
|
|
if (approve) {
|
|
cy.get(tokenInputApprove, txTimeout).should('be.enabled').click();
|
|
cy.contains('Approve $VEGA Tokens for staking on Vega').should(
|
|
'be.visible'
|
|
);
|
|
cy.contains('Approve $VEGA Tokens for staking on Vega', {
|
|
timeout: 40000,
|
|
}).should('not.exist');
|
|
}
|
|
cy.get(tokenSubmitButton, txTimeout).should('be.enabled').click();
|
|
cy.contains('can now participate in governance and nominate a validator', {
|
|
timeout: 60000,
|
|
}).should('be.visible');
|
|
}
|
|
);
|
|
|
|
Cypress.Commands.add('staking_page_disassociate_tokens', (amount) => {
|
|
cy.highlight(`Disassociating ${amount} tokens via Staking Page`);
|
|
cy.get(ethWalletDissociateButton).first().click();
|
|
cy.get(associateWalletRadioButton, { timeout: 30000 }).click();
|
|
cy.get(tokenAmountInputBox, { timeout: 10000 }).type(amount);
|
|
|
|
cy.get(tokenSubmitButton, txTimeout).should('be.enabled').click();
|
|
cy.contains(`${amount} $VEGA tokens have been returned to Ethereum wallet`, {
|
|
timeout: 60000,
|
|
}).should('be.visible');
|
|
});
|
|
|
|
Cypress.Commands.add('staking_page_disassociate_all_tokens', () => {
|
|
cy.highlight(`Disassociating all tokens via Staking Page`);
|
|
cy.get(ethWalletDissociateButton).first().click();
|
|
cy.get(associateWalletRadioButton, { timeout: 20000 }).click();
|
|
cy.get(stakeMaximumTokens, { timeout: 60000 }).click();
|
|
cy.get(tokenSubmitButton, { timeout: 10000 }).click();
|
|
cy.contains('$VEGA tokens have been returned to Ethereum wallet', {
|
|
timeout: 60000,
|
|
}).should('be.visible');
|
|
});
|
|
|
|
Cypress.Commands.add(
|
|
'click_on_validator_from_list',
|
|
(validatorNumber, validatorName = null) => {
|
|
cy.contains('Waiting for next epoch to start').should('not.exist');
|
|
cy.get(stakeValidatorListPendingStake, txTimeout).should(
|
|
'not.contain',
|
|
'2,000,000,000,000,000,000.00' // number due to bug #936
|
|
);
|
|
if (validatorName) {
|
|
cy.contains(validatorName).click();
|
|
} else {
|
|
cy.get(`[row-id="${validatorNumber}"]`)
|
|
.find(stakeValidatorListName)
|
|
.click();
|
|
}
|
|
}
|
|
);
|
|
|
|
Cypress.Commands.add(
|
|
'validate_validator_list_total_stake_and_share',
|
|
(
|
|
positionOnList,
|
|
expectedValidatorName,
|
|
expectedTotalStake,
|
|
expectedTotalShare
|
|
) => {
|
|
cy.get(`[row-id="${positionOnList}"]`).within(() => {
|
|
cy.get(stakeValidatorListName).should('have.text', expectedValidatorName);
|
|
cy.get(stakeValidatorListTotalStake).should(
|
|
'have.text',
|
|
expectedTotalStake
|
|
);
|
|
cy.get(stakeValidatorListTotalShare).should(
|
|
'have.text',
|
|
expectedTotalShare
|
|
);
|
|
});
|
|
}
|
|
);
|