2022-07-12 13:43:04 +00:00
|
|
|
const stakingPageLink = '[href="/staking"]';
|
|
|
|
const pageSpinner = 'splash-loader';
|
|
|
|
const menuBar = 'nav';
|
|
|
|
const validatorList = '[data-testid="node-list-item-name"]';
|
|
|
|
const removeStakeRadioButton = '[data-testid="remove-stake-radio"]';
|
|
|
|
const tokenAmountInputBox = '[data-testid="token-amount-input"]';
|
|
|
|
const tokenSubmitButton = '[data-testid="token-input-submit-button"]';
|
|
|
|
const stakeNextEpochValue = '[data-testid="stake-next-epoch"]';
|
2022-07-08 10:48:51 +00:00
|
|
|
const vegaWalletPublicKeyShort = Cypress.env('vegaWalletPublicKeyShort');
|
2022-07-12 13:43:04 +00:00
|
|
|
const vegaWalletContainer = '[data-testid="vega-wallet"]';
|
2022-07-08 10:48:51 +00:00
|
|
|
|
2022-07-11 13:32:32 +00:00
|
|
|
context('Staking Flow - with eth and vega wallets connected', function () {
|
2022-07-08 10:48:51 +00:00
|
|
|
before('visit staking tab and connect vega wallet', function () {
|
|
|
|
cy.vega_wallet_import();
|
|
|
|
cy.visit('/');
|
2022-07-12 13:43:04 +00:00
|
|
|
cy.get(menuBar, { timeout: 20000 }).should('be.visible');
|
2022-07-08 10:48:51 +00:00
|
|
|
cy.vega_wallet_connect();
|
|
|
|
cy.vega_wallet_set_specified_approval_amount('1000');
|
|
|
|
cy.reload();
|
2022-07-12 13:43:04 +00:00
|
|
|
cy.get(menuBar, { timeout: 20000 }).should('be.visible');
|
2022-07-08 10:48:51 +00:00
|
|
|
cy.ethereum_wallet_connect();
|
2022-07-12 13:43:04 +00:00
|
|
|
cy.get(stakingPageLink).first().click();
|
|
|
|
cy.get(pageSpinner, { timeout: 20000 }).should('not.exist');
|
|
|
|
cy.get(validatorList).first().invoke('text').as('validatorName');
|
|
|
|
cy.get(validatorList).last().invoke('text').as('otherValidatorName');
|
2022-07-08 10:48:51 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
describe('Eth wallet - contains VEGA tokens', function () {
|
|
|
|
beforeEach(
|
|
|
|
'teardown wallet & drill into a specific validator',
|
|
|
|
function () {
|
|
|
|
cy.vega_wallet_teardown();
|
2022-07-12 13:43:04 +00:00
|
|
|
cy.get(stakingPageLink).first().click();
|
2022-07-08 10:48:51 +00:00
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
it('Able to stake against a validator', function () {
|
|
|
|
cy.staking_page_associate_tokens('3');
|
|
|
|
cy.vega_wallet_check_unstaked_value_is('3.000000000000000000');
|
|
|
|
cy.ethereum_wallet_check_associated_value_is('3.0');
|
|
|
|
cy.ethereum_wallet_check_associated_vega_key_value_is(
|
|
|
|
vegaWalletPublicKeyShort,
|
|
|
|
'3.000000000000000000'
|
|
|
|
);
|
|
|
|
|
|
|
|
cy.get('button').contains('Select a validator to nominate').click();
|
2022-07-12 13:43:04 +00:00
|
|
|
cy.get(validatorList).contains(this.validatorName).click();
|
2022-07-08 10:48:51 +00:00
|
|
|
|
|
|
|
cy.staking_validator_page_add_stake('2');
|
|
|
|
cy.vega_wallet_check_validator_stake_next_epoch_value_is(
|
|
|
|
this.validatorName,
|
|
|
|
'2.000000000000000000'
|
|
|
|
);
|
|
|
|
cy.vega_wallet_check_unstaked_value_is('1.000000000000000000');
|
|
|
|
cy.vega_wallet_check_validator_staked_value_is(
|
|
|
|
this.validatorName,
|
|
|
|
'2.000000000000000000'
|
|
|
|
);
|
|
|
|
cy.staking_validator_page_check_stake_next_epoch_value('2.0');
|
|
|
|
cy.staking_validator_page_check_stake_this_epoch_value('2.0');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('Able to stake against mulitple validators', function () {
|
|
|
|
cy.staking_page_associate_tokens('5');
|
|
|
|
cy.vega_wallet_check_unstaked_value_is('5.000000000000000000');
|
|
|
|
cy.get('button').contains('Select a validator to nominate').click();
|
2022-07-12 13:43:04 +00:00
|
|
|
cy.get(validatorList).contains(this.validatorName).click();
|
2022-07-08 10:48:51 +00:00
|
|
|
|
|
|
|
cy.staking_validator_page_add_stake('2');
|
|
|
|
cy.vega_wallet_check_validator_staked_value_is(
|
|
|
|
this.validatorName,
|
|
|
|
'2.000000000000000000'
|
|
|
|
);
|
2022-07-12 13:43:04 +00:00
|
|
|
cy.get(stakingPageLink).first().click();
|
|
|
|
cy.get(validatorList).contains(this.otherValidatorName).click();
|
2022-07-08 10:48:51 +00:00
|
|
|
cy.staking_validator_page_add_stake('1');
|
|
|
|
cy.vega_wallet_check_validator_staked_value_is(
|
|
|
|
this.otherValidatorName,
|
|
|
|
'1.000000000000000000'
|
|
|
|
);
|
|
|
|
cy.vega_wallet_check_unstaked_value_is('2.000000000000000000');
|
|
|
|
});
|
|
|
|
|
|
|
|
it.skip('Able to remove part of a stake against a validator', function () {
|
|
|
|
cy.staking_page_associate_tokens('4');
|
|
|
|
cy.vega_wallet_check_unstaked_value_is('4.000000000000000000');
|
|
|
|
|
|
|
|
cy.get('button').contains('Select a validator to nominate').click();
|
2022-07-12 13:43:04 +00:00
|
|
|
cy.get(validatorList).contains(this.validatorName).click();
|
2022-07-08 10:48:51 +00:00
|
|
|
|
|
|
|
cy.staking_validator_page_add_stake('3');
|
|
|
|
cy.staking_validator_page_check_stake_next_epoch_value('3.0');
|
|
|
|
cy.vega_wallet_check_validator_stake_next_epoch_value_is(
|
|
|
|
this.validatorName,
|
|
|
|
'3.000000000000000000'
|
|
|
|
);
|
|
|
|
cy.vega_wallet_check_unstaked_value_is('1.000000000000000000');
|
|
|
|
|
2022-07-12 13:43:04 +00:00
|
|
|
cy.get(stakingPageLink).first().click();
|
|
|
|
cy.get(validatorList).contains(this.validatorName).click();
|
2022-07-08 10:48:51 +00:00
|
|
|
|
|
|
|
cy.staking_validator_page_removeStake('1');
|
|
|
|
cy.staking_validator_page_check_stake_next_epoch_value('2.0');
|
|
|
|
cy.staking_validator_page_check_stake_this_epoch_value('3.0');
|
|
|
|
cy.vega_wallet_check_validator_stake_next_epoch_value_is(
|
|
|
|
this.validatorName,
|
|
|
|
'2.000000000000000000'
|
|
|
|
);
|
|
|
|
cy.vega_wallet_check_validator_stake_this_epoch_value_is(
|
|
|
|
this.validatorName,
|
|
|
|
'3.000000000000000000'
|
|
|
|
);
|
|
|
|
cy.vega_wallet_check_unstaked_value_is('2.000000000000000000');
|
|
|
|
cy.vega_wallet_check_validator_staked_value_is(
|
|
|
|
this.validatorName,
|
|
|
|
'2.000000000000000000'
|
|
|
|
);
|
|
|
|
cy.staking_validator_page_check_stake_next_epoch_value('2.0');
|
|
|
|
cy.staking_validator_page_check_stake_this_epoch_value('2.0');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('Able to remove a full stake against a validator', function () {
|
|
|
|
cy.staking_page_associate_tokens('3');
|
|
|
|
cy.vega_wallet_check_unstaked_value_is('3.000000000000000000');
|
|
|
|
|
|
|
|
cy.get('button').contains('Select a validator to nominate').click();
|
2022-07-12 13:43:04 +00:00
|
|
|
cy.get(validatorList).contains(this.validatorName).click();
|
2022-07-08 10:48:51 +00:00
|
|
|
|
|
|
|
cy.staking_validator_page_add_stake('1');
|
|
|
|
cy.vega_wallet_check_validator_stake_next_epoch_value_is(
|
|
|
|
this.validatorName,
|
|
|
|
'1.000000000000000000'
|
|
|
|
);
|
|
|
|
cy.vega_wallet_check_unstaked_value_is('2.000000000000000000');
|
|
|
|
|
2022-07-12 13:43:04 +00:00
|
|
|
cy.get(stakingPageLink).first().click();
|
|
|
|
cy.get(validatorList).contains(this.validatorName).click();
|
2022-07-08 10:48:51 +00:00
|
|
|
|
|
|
|
cy.staking_validator_page_removeStake('1');
|
|
|
|
cy.staking_validator_page_check_stake_next_epoch_value('0.0');
|
|
|
|
|
|
|
|
cy.vega_wallet_check_validator_stake_this_epoch_value_is(
|
|
|
|
this.validatorName,
|
|
|
|
'1.000000000000000000'
|
|
|
|
);
|
|
|
|
cy.vega_wallet_check_validator_stake_next_epoch_value_is(
|
|
|
|
this.validatorName,
|
|
|
|
'0.000000000000000000'
|
|
|
|
);
|
|
|
|
cy.vega_wallet_check_unstaked_value_is('3.000000000000000000');
|
|
|
|
cy.staking_validator_page_check_stake_next_epoch_value('0.0');
|
|
|
|
cy.staking_validator_page_check_stake_this_epoch_value('0.0');
|
|
|
|
cy.vega_wallet_check_validator_no_longer_showing(this.validatorName);
|
|
|
|
});
|
|
|
|
|
|
|
|
it.skip('Unable to remove a stake with a negative value for a validator', function () {
|
|
|
|
cy.staking_page_associate_tokens('3');
|
|
|
|
cy.vega_wallet_check_unstaked_value_is('3.000000000000000000');
|
|
|
|
|
|
|
|
cy.get('button').contains('Select a validator to nominate').click();
|
2022-07-12 13:43:04 +00:00
|
|
|
cy.get(validatorList).contains(this.validatorName).click();
|
2022-07-08 10:48:51 +00:00
|
|
|
|
|
|
|
cy.staking_validator_page_add_stake('2');
|
|
|
|
cy.staking_validator_page_check_stake_next_epoch_value('2.0');
|
|
|
|
cy.vega_wallet_check_validator_stake_next_epoch_value_is(
|
|
|
|
this.validatorName,
|
|
|
|
'2.000000000000000000'
|
|
|
|
);
|
|
|
|
cy.vega_wallet_check_unstaked_value_is('1.000000000000000000');
|
|
|
|
|
2022-07-12 13:43:04 +00:00
|
|
|
cy.get(stakingPageLink).first().click();
|
|
|
|
cy.get(validatorList).contains(this.validatorName).click();
|
|
|
|
cy.get(removeStakeRadioButton).click({ force: true });
|
|
|
|
cy.get(tokenAmountInputBox).type('-0.1');
|
2022-07-08 10:48:51 +00:00
|
|
|
cy.contains('Waiting for next epoch to start', { timeout: 10000 });
|
2022-07-12 13:43:04 +00:00
|
|
|
cy.get(tokenSubmitButton)
|
2022-07-08 10:48:51 +00:00
|
|
|
.should('be.disabled', { timeout: 8000 })
|
|
|
|
.and('contain', `Remove -0.1 $VEGA tokens at the end of epoch`)
|
|
|
|
.and('be.visible');
|
|
|
|
});
|
|
|
|
|
|
|
|
it.skip('Unable to remove a stake greater than staked amount next epoch for a validator', function () {
|
|
|
|
cy.staking_page_associate_tokens('3');
|
|
|
|
cy.vega_wallet_check_unstaked_value_is('3.000000000000000000');
|
|
|
|
|
|
|
|
cy.get('button').contains('Select a validator to nominate').click();
|
2022-07-12 13:43:04 +00:00
|
|
|
cy.get(validatorList).contains(this.validatorName).click();
|
2022-07-08 10:48:51 +00:00
|
|
|
|
|
|
|
cy.staking_validator_page_add_stake('2');
|
|
|
|
cy.staking_validator_page_check_stake_next_epoch_value('2.0');
|
|
|
|
cy.vega_wallet_check_validator_stake_next_epoch_value_is(
|
|
|
|
this.validatorName,
|
|
|
|
'2.000000000000000000'
|
|
|
|
);
|
|
|
|
cy.vega_wallet_check_unstaked_value_is('1.000000000000000000');
|
|
|
|
|
2022-07-12 13:43:04 +00:00
|
|
|
cy.get(stakingPageLink).first().click();
|
|
|
|
cy.get(validatorList).contains(this.validatorName).click();
|
|
|
|
cy.get(removeStakeRadioButton).click({ force: true });
|
|
|
|
cy.get(tokenAmountInputBox).type(4);
|
2022-07-08 10:48:51 +00:00
|
|
|
cy.contains('Waiting for next epoch to start', { timeout: 10000 });
|
2022-07-12 13:43:04 +00:00
|
|
|
cy.get(tokenSubmitButton)
|
2022-07-08 10:48:51 +00:00
|
|
|
.should('be.disabled', { timeout: 8000 })
|
|
|
|
.and('contain', `Remove 4 $VEGA tokens at the end of epoch`)
|
|
|
|
.and('be.visible');
|
|
|
|
});
|
|
|
|
|
|
|
|
it.skip('Disassociating all tokens - removes all staked tokens', function () {
|
|
|
|
cy.staking_page_associate_tokens('3');
|
|
|
|
cy.vega_wallet_check_unstaked_value_is('3.000000000000000000');
|
|
|
|
|
|
|
|
cy.get('button').contains('Select a validator to nominate').click();
|
2022-07-12 13:43:04 +00:00
|
|
|
cy.get(validatorList).contains(this.validatorName).click();
|
2022-07-08 10:48:51 +00:00
|
|
|
|
|
|
|
cy.staking_validator_page_add_stake('2');
|
|
|
|
cy.vega_wallet_check_unstaked_value_is('1.000000000000000000');
|
|
|
|
cy.vega_wallet_check_validator_staked_value_is(
|
|
|
|
this.validatorName,
|
|
|
|
'2.000000000000000000'
|
|
|
|
);
|
2022-07-12 13:43:04 +00:00
|
|
|
cy.get(stakingPageLink).first().click();
|
2022-07-08 10:48:51 +00:00
|
|
|
cy.staking_page_disassociate_all_tokens();
|
|
|
|
cy.ethereum_wallet_check_associated_vega_key_is_no_longer_showing(
|
|
|
|
vegaWalletPublicKeyShort
|
|
|
|
);
|
|
|
|
cy.ethereum_wallet_check_associated_value_is('0.0');
|
|
|
|
cy.vega_wallet_check_associated_value_is('0.000000000000000000');
|
|
|
|
cy.vega_wallet_check_validator_no_longer_showing(this.validatorName);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('Disassociating some tokens - prioritizes unstaked tokens', function () {
|
|
|
|
cy.staking_page_associate_tokens('3');
|
|
|
|
cy.vega_wallet_check_unstaked_value_is('3.000000000000000000');
|
|
|
|
|
|
|
|
cy.get('button').contains('Select a validator to nominate').click();
|
2022-07-12 13:43:04 +00:00
|
|
|
cy.get(validatorList).contains(this.validatorName).click();
|
2022-07-08 10:48:51 +00:00
|
|
|
|
|
|
|
cy.staking_validator_page_add_stake('2');
|
|
|
|
cy.vega_wallet_check_unstaked_value_is('1.000000000000000000');
|
|
|
|
cy.vega_wallet_check_validator_staked_value_is(
|
|
|
|
this.validatorName,
|
|
|
|
'2.000000000000000000'
|
|
|
|
);
|
2022-07-12 13:43:04 +00:00
|
|
|
cy.get(stakingPageLink).first().click();
|
2022-07-08 10:48:51 +00:00
|
|
|
cy.staking_page_disassociate_tokens('1');
|
|
|
|
cy.ethereum_wallet_check_associated_value_is('2.0');
|
|
|
|
cy.vega_wallet_check_associated_value_is('2.000000000000000000');
|
|
|
|
cy.vega_wallet_check_validator_staked_value_is(
|
|
|
|
this.validatorName,
|
|
|
|
'2.000000000000000000'
|
|
|
|
);
|
|
|
|
});
|
|
|
|
|
|
|
|
after(
|
|
|
|
'teardown wallet so state/results dont bleed into other test suites',
|
|
|
|
function () {
|
|
|
|
cy.vega_wallet_teardown();
|
|
|
|
}
|
|
|
|
);
|
|
|
|
});
|
|
|
|
|
2022-07-12 13:43:04 +00:00
|
|
|
Cypress.Commands.add(
|
|
|
|
'staking_validator_page_check_stake_next_epoch_value',
|
|
|
|
(expectedVal) => {
|
|
|
|
cy.highlight(
|
|
|
|
`Checking Staking Page - Validator Stake Next Epoch Value is ${expectedVal}`
|
|
|
|
);
|
|
|
|
cy.get(stakeNextEpochValue, { timeout: 10000 })
|
|
|
|
.contains(expectedVal, { timeout: 10000 })
|
2022-07-08 10:48:51 +00:00
|
|
|
.should('be.visible');
|
2022-07-12 13:43:04 +00:00
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
Cypress.Commands.add(
|
|
|
|
'staking_validator_page_check_stake_this_epoch_value',
|
|
|
|
(expectedVal) => {
|
|
|
|
cy.highlight(
|
|
|
|
`Checking Staking Page - Validator Stake This Epoch Value is ${expectedVal}`
|
|
|
|
);
|
|
|
|
cy.get(stakeNextEpochValue, { timeout: 10000 })
|
|
|
|
.contains(expectedVal, { timeout: 10000 })
|
2022-07-08 10:48:51 +00:00
|
|
|
.should('be.visible');
|
2022-07-12 13:43:04 +00:00
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
Cypress.Commands.add(
|
|
|
|
'vega_wallet_check_validator_stake_next_epoch_value_is',
|
|
|
|
(validatorName, expectedVal) => {
|
|
|
|
cy.highlight(
|
|
|
|
`Checking vega wallet - Stake Next Epoch Value for ${validatorName} is ${expectedVal}`
|
|
|
|
);
|
|
|
|
cy.get(vegaWalletContainer).within(() => {
|
|
|
|
cy.contains(`${validatorName} (Next epoch)`, { timeout: 40000 })
|
|
|
|
.siblings()
|
|
|
|
.contains(expectedVal, { timeout: 40000 })
|
|
|
|
.should('be.visible');
|
2022-07-08 10:48:51 +00:00
|
|
|
});
|
2022-07-12 13:43:04 +00:00
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
Cypress.Commands.add(
|
|
|
|
'vega_wallet_check_validator_stake_this_epoch_value_is',
|
|
|
|
(validatorName, expectedVal) => {
|
|
|
|
cy.highlight(
|
|
|
|
`Checking vega wallet - Stake This Epoch Value for ${validatorName} is ${expectedVal}`
|
|
|
|
);
|
|
|
|
cy.get(vegaWalletContainer).within(() => {
|
|
|
|
cy.contains(`${validatorName} (This Epoch)`, { timeout: 40000 })
|
|
|
|
.siblings()
|
|
|
|
.contains(expectedVal, { timeout: 40000 })
|
|
|
|
.should('be.visible');
|
|
|
|
});
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
Cypress.Commands.add(
|
|
|
|
'vega_wallet_check_validator_no_longer_showing',
|
|
|
|
(validatorName) => {
|
|
|
|
cy.highlight(
|
|
|
|
`Checking Validator and therefore stake removed for ${validatorName}`
|
|
|
|
);
|
|
|
|
cy.get(vegaWalletContainer).within(() => {
|
|
|
|
cy.contains(`${validatorName}`, { timeout: 40000 }).should(
|
|
|
|
'not.exist',
|
|
|
|
{
|
|
|
|
timeout: 40000,
|
|
|
|
}
|
|
|
|
);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
Cypress.Commands.add(
|
|
|
|
'vega_wallet_check_validator_staked_value_is',
|
|
|
|
(validatorName, expectedVal) => {
|
|
|
|
cy.highlight(
|
|
|
|
`Checking Validator Stake Value for ${validatorName} is ${expectedVal}`
|
|
|
|
);
|
|
|
|
cy.get(vegaWalletContainer).within(() => {
|
|
|
|
cy.contains(`${validatorName}`, { timeout: 40000 })
|
|
|
|
.siblings()
|
|
|
|
.contains(expectedVal, { timeout: 40000 })
|
|
|
|
.should('be.visible');
|
|
|
|
});
|
|
|
|
}
|
|
|
|
);
|
2022-07-08 10:48:51 +00:00
|
|
|
});
|