test(token): e2e tests for validator tooltips (#2883)

This commit is contained in:
Joe Tsang 2023-02-09 10:35:05 +00:00 committed by GitHub
parent 87f116daee
commit 8917ceb08a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 74 additions and 19 deletions

View File

@ -866,6 +866,10 @@ context(
cy.get(stakeTokenSubmitButton).should('contain', 'Add 1 $VEGA tokens'); cy.get(stakeTokenSubmitButton).should('contain', 'Add 1 $VEGA tokens');
}); });
after('teardown wallet', function () {
cy.vega_wallet_teardown();
});
}); });
} }
); );

View File

@ -10,6 +10,16 @@ const pendingStake = '[data-testid="pending-stake"]';
const stakedByOperator = '[data-testid="staked-by-operator"]'; const stakedByOperator = '[data-testid="staked-by-operator"]';
const stakedByDelegates = '[data-testid="staked-by-delegates"]'; const stakedByDelegates = '[data-testid="staked-by-delegates"]';
const stakeShare = '[data-testid="stake-percentage"]'; const stakeShare = '[data-testid="stake-percentage"]';
const stakedByOperatorToolTip = "[data-testid='staked-operator-tooltip']";
const stakedByDelegatesToolTip = "[data-testid='staked-delegates-tooltip']";
const totalStakedToolTip = "[data-testid='total-staked-tooltip']";
const unnormalisedVotingPowerToolTip =
"[data-testid='unnormalised-voting-power-tooltip']";
const normalisedVotingPowerToolTip =
"[data-testid='normalised-voting-power-tooltip']";
const performancePenaltyToolTip = "[data-testid='performance-penalty-tooltip']";
const overstakedPenaltyToolTip = "[data-testid='overstaked-penalty-tooltip']";
const totalPenaltyToolTip = "[data-testid='total-penalty-tooltip']";
const epochCountDown = '[data-testid="epoch-countdown"]'; const epochCountDown = '[data-testid="epoch-countdown"]';
const stakeNumberRegex = /^\d*\.?\d*$/; const stakeNumberRegex = /^\d*\.?\d*$/;
@ -56,37 +66,70 @@ context('Staking Page - verify elements on page', function () {
}); });
it('Should be able to see validator stake', function () { it('Should be able to see validator stake', function () {
cy.get('[col-id="stake"] > div > span') cy.get('[col-id="stake"] > div > span > span')
.should('have.length.at.least', 1) .should('have.length.at.least', 1)
.each(($stake) => { .each(($stake) => {
cy.wrap($stake).should('not.be.empty'); cy.wrap($stake).should('not.be.empty');
}); });
}); });
it('Should be able to see validator stake tooltip', function () {
cy.get('[col-id="stake"] > div > span > span').first().realHover();
cy.get(stakedByOperatorToolTip)
.invoke('text')
.should('contain', 'Staked by operator: 0.00');
cy.get(stakedByDelegatesToolTip)
.invoke('text')
.should('contain', 'Staked by delegates: 0.00');
cy.get(totalStakedToolTip)
.invoke('text')
.should('contain', 'Total stake: 0.00');
});
it('Should be able to see validator normalised voting power', function () { it('Should be able to see validator normalised voting power', function () {
cy.get('[col-id="normalisedVotingPower"] > div > span') cy.get('[col-id="normalisedVotingPower"] > div > span > span')
.should('have.length.at.least', 1) .should('have.length.at.least', 1)
.each(($vPower) => { .each(($vPower) => {
cy.wrap($vPower).should('not.be.empty'); cy.wrap($vPower).should('not.be.empty');
}); });
}); });
it('Should be able to see validator normalised voting power', function () { it('Should be able to see validator voting power tooltip', function () {
cy.get('[col-id="normalisedVotingPower"] > div > span') cy.get('[col-id="normalisedVotingPower"] > div > span > span')
.should('have.length.at.least', 1) .first()
.each(($vPower) => { .realHover();
cy.wrap($vPower).should('not.be.empty');
}); cy.get(unnormalisedVotingPowerToolTip)
.invoke('text')
.should('contain', 'Unnormalised voting power: 0.00%');
cy.get(normalisedVotingPowerToolTip)
.invoke('text')
.should('contain', 'Normalised voting power: 0.10%');
}); });
it('Should be able to see validator total penalties', function () { it('Should be able to see validator total penalties', function () {
cy.get('[col-id="totalPenalties"] > div > span') cy.get('[col-id="totalPenalties"] > div > span > span')
.should('have.length.at.least', 1) .should('have.length.at.least', 1)
.each(($penalties) => { .each(($penalties) => {
cy.wrap($penalties).should('contain.text', '0%'); cy.wrap($penalties).should('contain.text', '0%');
}); });
}); });
it('Should be able to see validator penalties tooltip', function () {
cy.get('[col-id="totalPenalties"] > div > span > span').realHover();
cy.get(performancePenaltyToolTip)
.invoke('text')
.should('contain', 'Performance penalty: 100.00%');
cy.get(overstakedPenaltyToolTip)
.invoke('text')
.should('contain', 'Overstaked penalty:'); // value not asserted due to #2886
cy.get(totalPenaltyToolTip)
.invoke('text')
.should('contain', 'Total penalties: 0.00%');
});
it('Should be able to see validator pending stake', function () { it('Should be able to see validator pending stake', function () {
cy.get('[col-id="pendingStake"] > div > span') cy.get('[col-id="pendingStake"] > div > span')
.should('have.length.at.least', 1) .should('have.length.at.least', 1)

View File

@ -1,4 +1,5 @@
import '@vegaprotocol/cypress'; import '@vegaprotocol/cypress';
import 'cypress-real-events/support';
import './common.functions.js'; import './common.functions.js';
import './staking.functions.js'; import './staking.functions.js';

View File

@ -95,8 +95,15 @@ Cypress.Commands.add('faucet_asset', function (assetEthAddress) {
}); });
Cypress.Commands.add('vega_wallet_teardown', function () { Cypress.Commands.add('vega_wallet_teardown', function () {
cy.get('[data-testid="associated-amount"]')
.should('be.visible')
.invoke('text')
.as('associatedAmount');
cy.get('body').then(($body) => { cy.get('body').then(($body) => {
if ($body.find('[data-testid="eth-wallet-associated-balances"]').length) { if (
$body.find('[data-testid="eth-wallet-associated-balances"]').length ||
this.associatedAmount != '0.00'
) {
cy.vega_wallet_teardown_vesting(this.vestingContract); cy.vega_wallet_teardown_vesting(this.vestingContract);
cy.vega_wallet_teardown_staking(this.stakingBridgeContract); cy.vega_wallet_teardown_staking(this.stakingBridgeContract);
} }

View File

@ -7,7 +7,7 @@
"allowSyntheticDefaultImports": true, "allowSyntheticDefaultImports": true,
"outDir": "../../dist/out-tsc", "outDir": "../../dist/out-tsc",
"allowJs": true, "allowJs": true,
"types": ["cypress", "node", "@cypress/grep"] "types": ["cypress", "node", "cypress-real-events", "@cypress/grep"]
}, },
"include": ["src/**/*.ts", "src/**/*.js"] "include": ["src/**/*.ts", "src/**/*.js"]
} }

View File

@ -126,10 +126,10 @@ export const VotingPowerRenderer = ({ data }: VotingPowerRendererProps) => {
<Tooltip <Tooltip
description={ description={
<> <>
<div> <div data-testid="unnormalised-voting-power-tooltip">
{t('unnormalisedVotingPower')}: {data.unnormalisedVotingPower} {t('unnormalisedVotingPower')}: {data.unnormalisedVotingPower}
</div> </div>
<div> <div data-testid="normalised-voting-power-tooltip">
{t('normalisedVotingPower')}: {data.normalisedVotingPower} {t('normalisedVotingPower')}: {data.normalisedVotingPower}
</div> </div>
</> </>
@ -155,13 +155,13 @@ export const TotalStakeRenderer = ({ data }: TotalStakeRendererProps) => {
<Tooltip <Tooltip
description={ description={
<> <>
<div> <div data-testid="staked-operator-tooltip">
{t('stakedByOperator')}: {data.stakedByOperator.toString()} {t('stakedByOperator')}: {data.stakedByOperator.toString()}
</div> </div>
<div> <div data-testid="staked-delegates-tooltip">
{t('stakedByDelegates')}: {data.stakedByDelegates.toString()} {t('stakedByDelegates')}: {data.stakedByDelegates.toString()}
</div> </div>
<div> <div data-testid="total-staked-tooltip">
{t('totalStake')}: <span className="font-bold">{data.stake}</span> {t('totalStake')}: <span className="font-bold">{data.stake}</span>
</div> </div>
</> </>
@ -191,13 +191,13 @@ export const TotalPenaltiesRenderer = ({
<Tooltip <Tooltip
description={ description={
<> <>
<div> <div data-testid="performance-penalty-tooltip">
{t('performancePenalty')}: {data.performancePenalty} {t('performancePenalty')}: {data.performancePenalty}
</div> </div>
<div> <div data-testid="overstaked-penalty-tooltip">
{t('overstakedPenalty')}: {data.overstakingPenalty} {t('overstakedPenalty')}: {data.overstakingPenalty}
</div> </div>
<div> <div data-testid="total-penalty-tooltip">
{t('totalPenalties')}:{' '} {t('totalPenalties')}:{' '}
<span className="font-bold">{data.totalPenalties}</span> <span className="font-bold">{data.totalPenalties}</span>
</div> </div>