test(governance): fix staking tooltip test (#4198)

This commit is contained in:
Joe Tsang 2023-06-28 17:15:06 +01:00 committed by GitHub
parent cafb3b1c57
commit 55143331f1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 486 additions and 419 deletions

View File

@ -28,18 +28,17 @@ import type { testFreeformProposal } from '../../support/common-interfaces';
import { formatDateWithLocalTimezone } from '@vegaprotocol/utils'; import { formatDateWithLocalTimezone } from '@vegaprotocol/utils';
const proposalVoteProgressForPercentage = const proposalVoteProgressForPercentage =
'[data-testid="vote-progress-indicator-percentage-for"]'; 'vote-progress-indicator-percentage-for';
const proposalVoteProgressAgainstPercentage = const proposalVoteProgressAgainstPercentage =
'[data-testid="vote-progress-indicator-percentage-against"]'; 'vote-progress-indicator-percentage-against';
const proposalVoteProgressForTokens = const proposalVoteProgressForTokens = 'vote-progress-indicator-tokens-for';
'[data-testid="vote-progress-indicator-tokens-for"]';
const proposalVoteProgressAgainstTokens = const proposalVoteProgressAgainstTokens =
'[data-testid="vote-progress-indicator-tokens-against"]'; 'vote-progress-indicator-tokens-against';
const changeVoteButton = '[data-testid="change-vote-button"]'; const changeVoteButton = 'change-vote-button';
const proposalDetailsTitle = '[data-testid="proposal-title"]'; const proposalDetailsTitle = 'proposal-title';
const proposalDetailsDescription = '[data-testid="proposal-description"]'; const proposalDetailsDescription = 'proposal-description';
const openProposals = '[data-testid="open-proposals"]'; const openProposals = 'open-proposals';
const viewProposalButton = '[data-testid="view-proposal-btn"]'; const viewProposalButton = 'view-proposal-btn';
const proposalDescriptionToggle = 'proposal-description-toggle'; const proposalDescriptionToggle = 'proposal-description-toggle';
const voteBreakdownToggle = 'vote-breakdown-toggle'; const voteBreakdownToggle = 'vote-breakdown-toggle';
const proposalTermsToggle = 'proposal-json-toggle'; const proposalTermsToggle = 'proposal-json-toggle';
@ -72,18 +71,18 @@ describe(
createRawProposal(); createRawProposal();
cy.get<testFreeformProposal>('@rawProposal').then((rawProposal) => { cy.get<testFreeformProposal>('@rawProposal').then((rawProposal) => {
cy.get(openProposals).within(() => { cy.getByTestId(openProposals).within(() => {
getProposalFromTitle(rawProposal.rationale.title).within(() => { getProposalFromTitle(rawProposal.rationale.title).within(() => {
cy.get(viewProposalButton).should('be.visible').click(); cy.getByTestId(viewProposalButton).should('be.visible').click();
}); });
}); });
cy.get(proposalDetailsTitle).should( cy.getByTestId(proposalDetailsTitle).should(
'contain.text', 'contain.text',
rawProposal.rationale.title rawProposal.rationale.title
); );
cy.getByTestId(proposalDescriptionToggle).click(); cy.getByTestId(proposalDescriptionToggle).click();
cy.getByTestId('proposal-description-toggle'); cy.getByTestId('proposal-description-toggle');
cy.get(proposalDetailsDescription) cy.getByTestId(proposalDetailsDescription)
.find('p') .find('p')
.should('have.text', proposalDescription); .should('have.text', proposalDescription);
}); });
@ -117,7 +116,7 @@ describe(
}); });
navigateTo(navigation.proposals); navigateTo(navigation.proposals);
getProposalFromTitle(proposalTitle).within(() => getProposalFromTitle(proposalTitle).within(() =>
cy.get(viewProposalButton).click() cy.getByTestId(viewProposalButton).click()
); );
cy.wrap( cy.wrap(
formatDateWithLocalTimezone(new Date(proposalTimeStamp * 1000)) formatDateWithLocalTimezone(new Date(proposalTimeStamp * 1000))
@ -139,7 +138,7 @@ describe(
createRawProposal(); createRawProposal();
cy.get<testFreeformProposal>('@rawProposal').then((rawProposal) => { cy.get<testFreeformProposal>('@rawProposal').then((rawProposal) => {
getProposalFromTitle(rawProposal.rationale.title).within(() => getProposalFromTitle(rawProposal.rationale.title).within(() =>
cy.get(viewProposalButton).click() cy.getByTestId(viewProposalButton).click()
); );
}); });
cy.contains('Participation: Not Met 0.00 0.00%(0.00% Required)').should( cy.contains('Participation: Not Met 0.00 0.00%(0.00% Required)').should(
@ -166,7 +165,7 @@ describe(
createRawProposal(); createRawProposal();
cy.get<testFreeformProposal>('@rawProposal').then((rawProposal) => { cy.get<testFreeformProposal>('@rawProposal').then((rawProposal) => {
getProposalFromTitle(rawProposal.rationale.title).within(() => getProposalFromTitle(rawProposal.rationale.title).within(() =>
cy.get(viewProposalButton).click() cy.getByTestId(viewProposalButton).click()
); );
}); });
// 3001-VOTE-080 // 3001-VOTE-080
@ -183,14 +182,16 @@ describe(
.contains(votedDate) .contains(votedDate)
.should('be.visible'); .should('be.visible');
}); });
cy.get(proposalVoteProgressForPercentage) // 3001-VOTE-072 cy.getByTestId(proposalVoteProgressForPercentage) // 3001-VOTE-072
.contains('100.00%') .contains('100.00%')
.and('be.visible'); .and('be.visible');
cy.get(proposalVoteProgressAgainstPercentage) cy.getByTestId(proposalVoteProgressAgainstPercentage)
.contains('0.00%') .contains('0.00%')
.and('be.visible'); .and('be.visible');
cy.get(proposalVoteProgressForTokens).contains('1.00').and('be.visible'); cy.getByTestId(proposalVoteProgressForTokens)
cy.get(proposalVoteProgressAgainstTokens) .contains('1.00')
.and('be.visible');
cy.getByTestId(proposalVoteProgressAgainstTokens)
.contains('0.00') .contains('0.00')
.and('be.visible'); .and('be.visible');
cy.getByTestId(voteBreakdownToggle).click(); cy.getByTestId(voteBreakdownToggle).click();
@ -211,15 +212,15 @@ describe(
getProposalInformationFromTable('Number of voting parties') getProposalInformationFromTable('Number of voting parties')
.should('have.text', '1') .should('have.text', '1')
.and('be.visible'); .and('be.visible');
cy.get(changeVoteButton).should('be.visible').click(); cy.getByTestId(changeVoteButton).should('be.visible').click();
voteForProposal('for'); voteForProposal('for');
// 3001-VOTE-064 // 3001-VOTE-064
getProposalInformationFromTable('Tokens for proposal') getProposalInformationFromTable('Tokens for proposal')
.should('have.text', (1).toFixed(2)) .should('have.text', (1).toFixed(2))
.and('be.visible'); .and('be.visible');
cy.get(changeVoteButton).should('be.visible').click(); cy.getByTestId(changeVoteButton).should('be.visible').click();
voteForProposal('against'); voteForProposal('against');
cy.get(proposalVoteProgressAgainstPercentage) cy.getByTestId(proposalVoteProgressAgainstPercentage)
.contains('100.00%') .contains('100.00%')
.and('be.visible'); .and('be.visible');
getProposalInformationFromTable('Tokens against proposal') getProposalInformationFromTable('Tokens against proposal')
@ -236,13 +237,15 @@ describe(
createRawProposal(); createRawProposal();
cy.get<testFreeformProposal>('@rawProposal').then((rawProposal) => { cy.get<testFreeformProposal>('@rawProposal').then((rawProposal) => {
getProposalFromTitle(rawProposal.rationale.title).within(() => getProposalFromTitle(rawProposal.rationale.title).within(() =>
cy.get(viewProposalButton).click() cy.getByTestId(viewProposalButton).click()
); );
}); });
voteForProposal('for'); voteForProposal('for');
// 3001-VOTE-079 // 3001-VOTE-079
cy.contains('You voted: For').should('be.visible'); cy.contains('You voted: For').should('be.visible');
cy.get(proposalVoteProgressForTokens).contains('1').and('be.visible'); cy.getByTestId(proposalVoteProgressForTokens)
.contains('1')
.and('be.visible');
cy.getByTestId(voteBreakdownToggle).click(); cy.getByTestId(voteBreakdownToggle).click();
getProposalInformationFromTable('Total Supply') getProposalInformationFromTable('Total Supply')
.invoke('text') .invoke('text')
@ -258,22 +261,22 @@ describe(
navigateTo(navigation.proposals); navigateTo(navigation.proposals);
cy.get<testFreeformProposal>('@rawProposal').then((rawProposal) => { cy.get<testFreeformProposal>('@rawProposal').then((rawProposal) => {
getProposalFromTitle(rawProposal.rationale.title).within(() => getProposalFromTitle(rawProposal.rationale.title).within(() =>
cy.get(viewProposalButton).click() cy.getByTestId(viewProposalButton).click()
); );
}); });
cy.get(proposalVoteProgressForPercentage) cy.getByTestId(proposalVoteProgressForPercentage)
.contains('100.00%') .contains('100.00%')
.and('be.visible'); .and('be.visible');
cy.get(proposalVoteProgressAgainstPercentage) cy.getByTestId(proposalVoteProgressAgainstPercentage)
.contains('0.00%') .contains('0.00%')
.and('be.visible'); .and('be.visible');
// 3001-VOTE-065 // 3001-VOTE-065
cy.get(changeVoteButton).should('be.visible').click(); cy.getByTestId(changeVoteButton).should('be.visible').click();
voteForProposal('for'); voteForProposal('for');
cy.get(proposalVoteProgressForTokens) cy.getByTestId(proposalVoteProgressForTokens)
.contains(tokensRequiredToAchieveResult) .contains(tokensRequiredToAchieveResult)
.and('be.visible'); .and('be.visible');
cy.get(proposalVoteProgressAgainstTokens) cy.getByTestId(proposalVoteProgressAgainstTokens)
.contains('0.00') .contains('0.00')
.and('be.visible'); .and('be.visible');
cy.getByTestId(voteBreakdownToggle).click(); cy.getByTestId(voteBreakdownToggle).click();
@ -310,7 +313,7 @@ describe(
createRawProposal(); createRawProposal();
cy.get<testFreeformProposal>('@rawProposal').then((rawProposal) => { cy.get<testFreeformProposal>('@rawProposal').then((rawProposal) => {
getProposalFromTitle(rawProposal.rationale.title).within(() => getProposalFromTitle(rawProposal.rationale.title).within(() =>
cy.get(viewProposalButton).click() cy.getByTestId(viewProposalButton).click()
); );
voteForProposal('for'); voteForProposal('for');
cy.contains('You voted: For').should('be.visible'); cy.contains('You voted: For').should('be.visible');
@ -319,13 +322,16 @@ describe(
stakingPageAssociateTokens('2'); stakingPageAssociateTokens('2');
navigateTo(navigation.proposals); navigateTo(navigation.proposals);
getProposalFromTitle(rawProposal.rationale.title).within(() => getProposalFromTitle(rawProposal.rationale.title).within(() =>
cy.get(viewProposalButton).click() cy.getByTestId(viewProposalButton).click()
); );
cy.getByTestId('you-voted').should('not.exist'); cy.getByTestId('you-voted').should('not.exist');
voteForProposal('against'); voteForProposal('against');
cy.contains('You voted: Against').should('be.visible'); cy.contains('You voted: Against').should('be.visible');
switchVegaWalletPubKey(); switchVegaWalletPubKey();
cy.get(proposalVoteProgressForTokens).should('contain.text', '1.00'); cy.getByTestId(proposalVoteProgressForTokens).should(
'contain.text',
'1.00'
);
// Checking vote status for different public keys is displayed correctly // Checking vote status for different public keys is displayed correctly
cy.contains('You voted: For').should('be.visible'); cy.contains('You voted: For').should('be.visible');
}); });

View File

@ -19,13 +19,13 @@ import { ethereumWalletConnect } from '../../support/wallet-eth.functions';
import { vegaWalletSetSpecifiedApprovalAmount } from '../../support/wallet-functions'; import { vegaWalletSetSpecifiedApprovalAmount } from '../../support/wallet-functions';
const proposalListItem = '[data-testid="proposals-list-item"]'; const proposalListItem = '[data-testid="proposals-list-item"]';
const closedProposals = '[data-testid="closed-proposals"]'; const closedProposals = 'closed-proposals';
const proposalStatus = '[data-testid="proposal-status"]'; const proposalStatus = 'proposal-status';
const viewProposalButton = '[data-testid="view-proposal-btn"]'; const viewProposalButton = 'view-proposal-btn';
const votesTable = '[data-testid="votes-table"]'; const votesTable = 'votes-table';
const openProposals = '[data-testid="open-proposals"]'; const openProposals = 'open-proposals';
const proposalVoteProgressForPercentage = const proposalVoteProgressForPercentage =
'[data-testid="vote-progress-indicator-percentage-for"]'; 'vote-progress-indicator-percentage-for';
const proposalTimeout = { timeout: 8000 }; const proposalTimeout = { timeout: 8000 };
context( context(
@ -55,18 +55,18 @@ context(
cy.createMarket(); cy.createMarket();
cy.reload(); cy.reload();
waitForSpinner(); waitForSpinner();
cy.get(closedProposals).within(() => { cy.getByTestId(closedProposals).within(() => {
cy.contains(proposalTitle) cy.contains(proposalTitle)
.parentsUntil(proposalListItem) .parentsUntil(proposalListItem)
.last() .last()
.within(() => { .within(() => {
cy.get(proposalStatus).should('have.text', 'Enacted'); cy.getByTestId(proposalStatus).should('have.text', 'Enacted');
cy.get(viewProposalButton).click(); cy.getByTestId(viewProposalButton).click();
}); });
}); });
cy.getByTestId('proposal-type').should('have.text', 'New market'); cy.getByTestId('proposal-type').should('have.text', 'New market');
cy.get(proposalStatus).should('have.text', 'Enacted'); cy.getByTestId(proposalStatus).should('have.text', 'Enacted');
cy.get(votesTable).within(() => { cy.getByTestId(votesTable).within(() => {
cy.contains('Vote passed.').should('be.visible'); cy.contains('Vote passed.').should('be.visible');
cy.contains('Voting has ended.').should('be.visible'); cy.contains('Voting has ended.').should('be.visible');
}); });
@ -81,27 +81,27 @@ context(
navigateTo(navigation.proposals); navigateTo(navigation.proposals);
cy.reload(); cy.reload();
waitForSpinner(); waitForSpinner();
cy.get(openProposals).within(() => { cy.getByTestId(openProposals).within(() => {
cy.contains(proposalTitle) cy.contains(proposalTitle)
.parentsUntil(proposalListItem) .parentsUntil(proposalListItem)
.last() .last()
.within(() => cy.get(viewProposalButton).click()); .within(() => cy.getByTestId(viewProposalButton).click());
}); });
cy.get(proposalStatus).should('have.text', 'Open'); cy.getByTestId(proposalStatus).should('have.text', 'Open');
voteForProposal('for'); voteForProposal('for');
cy.get(proposalStatus, proposalTimeout) cy.getByTestId(proposalStatus, proposalTimeout)
.should('have.text', 'Passed') .should('have.text', 'Passed')
.then(() => { .then(() => {
cy.get(proposalStatus, proposalTimeout).should( cy.getByTestId(proposalStatus, proposalTimeout).should(
'have.text', 'have.text',
'Enacted' 'Enacted'
); );
}); });
cy.get(votesTable).within(() => { cy.getByTestId(votesTable).within(() => {
cy.contains('Vote passed.').should('be.visible'); cy.contains('Vote passed.').should('be.visible');
cy.contains('Voting has ended.').should('be.visible'); cy.contains('Voting has ended.').should('be.visible');
}); });
cy.get(proposalVoteProgressForPercentage) cy.getByTestId(proposalVoteProgressForPercentage)
.contains('100.00%') .contains('100.00%')
.and('be.visible'); .and('be.visible');
}); });
@ -115,15 +115,18 @@ context(
navigateTo(navigation.proposals); navigateTo(navigation.proposals);
cy.reload(); cy.reload();
waitForSpinner(); waitForSpinner();
cy.get(openProposals, { timeout: 6000 }).within(() => { cy.getByTestId(openProposals, { timeout: 6000 }).within(() => {
cy.contains(proposalTitle) cy.contains(proposalTitle)
.parentsUntil(proposalListItem) .parentsUntil(proposalListItem)
.last() .last()
.within(() => cy.get(viewProposalButton).click()); .within(() => cy.getByTestId(viewProposalButton).click());
}); });
cy.get(proposalStatus).should('have.text', 'Open'); cy.getByTestId(proposalStatus).should('have.text', 'Open');
voteForProposal('for'); voteForProposal('for');
cy.get(proposalStatus, proposalTimeout).should('have.text', 'Enacted'); cy.getByTestId(proposalStatus, proposalTimeout).should(
'have.text',
'Enacted'
);
}); });
// 3001-VOTE-048 3001-VOTE-049 3001-VOTE-050 // 3001-VOTE-048 3001-VOTE-049 3001-VOTE-050
@ -134,14 +137,17 @@ context(
navigateTo(navigation.proposals); navigateTo(navigation.proposals);
cy.reload(); cy.reload();
waitForSpinner(); waitForSpinner();
cy.get(openProposals).within(() => { cy.getByTestId(openProposals).within(() => {
cy.contains(proposalTitle) cy.contains(proposalTitle)
.parentsUntil(proposalListItem) .parentsUntil(proposalListItem)
.last() .last()
.within(() => cy.get(viewProposalButton).click()); .within(() => cy.getByTestId(viewProposalButton).click());
}); });
cy.get(proposalStatus).should('have.text', 'Open'); cy.getByTestId(proposalStatus).should('have.text', 'Open');
cy.get(proposalStatus, proposalTimeout).should('have.text', 'Declined'); cy.getByTestId(proposalStatus, proposalTimeout).should(
'have.text',
'Declined'
);
getProposalInformationFromTable('Rejection reason') getProposalInformationFromTable('Rejection reason')
.contains('PROPOSAL_ERROR_PARTICIPATION_THRESHOLD_NOT_REACHED') .contains('PROPOSAL_ERROR_PARTICIPATION_THRESHOLD_NOT_REACHED')
.and('be.visible'); .and('be.visible');

View File

@ -36,20 +36,19 @@ import {
import { ethereumWalletConnect } from '../../support/wallet-eth.functions'; import { ethereumWalletConnect } from '../../support/wallet-eth.functions';
import type { testFreeformProposal } from '../../support/common-interfaces'; import type { testFreeformProposal } from '../../support/common-interfaces';
const vegaWalletStakedBalances = const vegaWalletStakedBalances = 'vega-wallet-balance-staked-validators';
'[data-testid="vega-wallet-balance-staked-validators"]'; const vegaWalletAssociatedBalance = 'associated-amount';
const vegaWalletAssociatedBalance = '[data-testid="associated-amount"]'; const vegaWalletNameElement = 'wallet-name';
const vegaWalletNameElement = '[data-testid="wallet-name"]'; const vegaWallet = 'vega-wallet';
const vegaWallet = '[data-testid="vega-wallet"]'; const connectToVegaWalletButton = 'connect-to-vega-wallet-btn';
const connectToVegaWalletButton = '[data-testid="connect-to-vega-wallet-btn"]'; const newProposalSubmitButton = 'proposal-submit';
const newProposalSubmitButton = '[data-testid="proposal-submit"]'; const viewProposalButton = 'view-proposal-btn';
const viewProposalButton = '[data-testid="view-proposal-btn"]'; const rawProposalData = 'proposal-data';
const rawProposalData = '[data-testid="proposal-data"]'; const voteButtons = 'vote-buttons';
const voteButtons = '[data-testid="vote-buttons"]';
const rejectProposalsLink = '[href="/proposals/rejected"]'; const rejectProposalsLink = '[href="/proposals/rejected"]';
const feedbackError = '[data-testid="Error"]'; const feedbackError = 'Error';
const noOpenProposals = '[data-testid="no-open-proposals"]'; const noOpenProposals = 'no-open-proposals';
const noClosedProposals = '[data-testid="no-closed-proposals"]'; const noClosedProposals = 'no-closed-proposals';
const txTimeout = Cypress.env('txTimeout'); const txTimeout = Cypress.env('txTimeout');
const epochTimeout = Cypress.env('epochTimeout'); const epochTimeout = Cypress.env('epochTimeout');
const proposalTimeout = { timeout: 14000 }; const proposalTimeout = { timeout: 14000 };
@ -93,10 +92,10 @@ context(
// Test can only pass if run before other proposal tests. // Test can only pass if run before other proposal tests.
it.skip('Should be able to see that no proposals exist', function () { it.skip('Should be able to see that no proposals exist', function () {
// 3001-VOTE-003 // 3001-VOTE-003
cy.get(noOpenProposals) cy.getByTestId(noOpenProposals)
.should('be.visible') .should('be.visible')
.and('have.text', 'There are no open or yet to enact proposals'); .and('have.text', 'There are no open or yet to enact proposals');
cy.get(noClosedProposals) cy.getByTestId(noClosedProposals)
.should('be.visible') .should('be.visible')
.and('have.text', 'There are no enacted or rejected proposals'); .and('have.text', 'There are no enacted or rejected proposals');
}); });
@ -126,7 +125,10 @@ context(
stakingValidatorPageAddStake('2'); stakingValidatorPageAddStake('2');
closeStakingDialog(); closeStakingDialog();
cy.get(vegaWalletStakedBalances, txTimeout).should('contain', '2'); cy.getByTestId(vegaWalletStakedBalances, txTimeout).should(
'contain',
'2'
);
createRawProposal(); createRawProposal();
}); });
@ -168,7 +170,7 @@ context(
getProposalFromTitle(rawProposal.rationale.title).within(() => { getProposalFromTitle(rawProposal.rationale.title).within(() => {
cy.contains('Rejected').should('be.visible'); cy.contains('Rejected').should('be.visible');
cy.contains('Close time too late').should('be.visible'); cy.contains('Close time too late').should('be.visible');
cy.get(viewProposalButton).click(); cy.getByTestId(viewProposalButton).click();
}); });
}); });
cy.getByTestId('proposal-status').should('have.text', 'Rejected'); cy.getByTestId('proposal-status').should('have.text', 'Rejected');
@ -185,14 +187,14 @@ context(
const errorMsg = const errorMsg =
'Network error: the network blocked the transaction through the spam protection: party has insufficient associated governance tokens in their staking account to submit proposal request (ABCI code 89)'; 'Network error: the network blocked the transaction through the spam protection: party has insufficient associated governance tokens in their staking account to submit proposal request (ABCI code 89)';
vegaWalletTeardown(); vegaWalletTeardown();
cy.get(vegaWalletAssociatedBalance, txTimeout).contains( cy.getByTestId(vegaWalletAssociatedBalance, txTimeout).contains(
'0.00', '0.00',
txTimeout txTimeout
); );
goToMakeNewProposal(governanceProposalType.RAW); goToMakeNewProposal(governanceProposalType.RAW);
enterRawProposalBody(createTenDigitUnixTimeStampForSpecifiedDays(8)); enterRawProposalBody(createTenDigitUnixTimeStampForSpecifiedDays(8));
cy.contains('Transaction failed', proposalTimeout).should('be.visible'); cy.contains('Transaction failed', proposalTimeout).should('be.visible');
cy.get(feedbackError).should('have.text', errorMsg); cy.getByTestId(feedbackError).should('have.text', errorMsg);
closeDialog(); closeDialog();
}); });
@ -205,7 +207,7 @@ context(
goToMakeNewProposal(governanceProposalType.RAW); goToMakeNewProposal(governanceProposalType.RAW);
enterRawProposalBody(createTenDigitUnixTimeStampForSpecifiedDays(8)); enterRawProposalBody(createTenDigitUnixTimeStampForSpecifiedDays(8));
cy.contains('Transaction failed', proposalTimeout).should('be.visible'); cy.contains('Transaction failed', proposalTimeout).should('be.visible');
cy.get(feedbackError).should('have.text', errorMsg); cy.getByTestId(feedbackError).should('have.text', errorMsg);
closeDialog(); closeDialog();
}); });
@ -221,17 +223,17 @@ context(
createTenDigitUnixTimeStampForSpecifiedDays(8); createTenDigitUnixTimeStampForSpecifiedDays(8);
freeformProposal.unexpected = `i shouldn't be here`; freeformProposal.unexpected = `i shouldn't be here`;
const proposalPayload = JSON.stringify(freeformProposal); const proposalPayload = JSON.stringify(freeformProposal);
cy.get(rawProposalData).type(proposalPayload, { cy.getByTestId(rawProposalData).type(proposalPayload, {
parseSpecialCharSequences: false, parseSpecialCharSequences: false,
delay: 2, delay: 2,
}); });
}); });
cy.get(newProposalSubmitButton).should('be.visible').click(); cy.getByTestId(newProposalSubmitButton).should('be.visible').click();
cy.contains('Transaction failed', proposalTimeout).should('be.visible'); cy.contains('Transaction failed', proposalTimeout).should('be.visible');
cy.get(feedbackError).should('have.text', errorMsg); cy.getByTestId(feedbackError).should('have.text', errorMsg);
closeDialog(); closeDialog();
cy.get(rawProposalData) cy.getByTestId(rawProposalData)
.invoke('val') .invoke('val')
.should('contain', "i shouldn't be here"); .should('contain', "i shouldn't be here");
}); });
@ -249,15 +251,15 @@ context(
rawProposal.terms.unexpectedField = `i shouldn't be here`; rawProposal.terms.unexpectedField = `i shouldn't be here`;
const proposalPayload = JSON.stringify(rawProposal); const proposalPayload = JSON.stringify(rawProposal);
cy.get(rawProposalData).type(proposalPayload, { cy.getByTestId(rawProposalData).type(proposalPayload, {
parseSpecialCharSequences: false, parseSpecialCharSequences: false,
delay: 2, delay: 2,
}); });
}); });
cy.get(newProposalSubmitButton).should('be.visible').click(); cy.getByTestId(newProposalSubmitButton).should('be.visible').click();
cy.contains('Transaction failed', proposalTimeout).should('be.visible'); cy.contains('Transaction failed', proposalTimeout).should('be.visible');
cy.get(feedbackError).should('have.text', errorMsg); cy.getByTestId(feedbackError).should('have.text', errorMsg);
closeDialog(); closeDialog();
}); });
@ -265,10 +267,10 @@ context(
// 3006-PASC-006 3006-PASC-007 3008-PFRO-018 3008-PFRO-019 3003-PMAN-006 3003-PMAN-007 // 3006-PASC-006 3006-PASC-007 3008-PFRO-018 3008-PFRO-019 3003-PMAN-006 3003-PMAN-007
it('Unable to submit proposal without valid json', function () { it('Unable to submit proposal without valid json', function () {
goToMakeNewProposal(governanceProposalType.RAW); goToMakeNewProposal(governanceProposalType.RAW);
cy.get(newProposalSubmitButton).click(); cy.getByTestId(newProposalSubmitButton).click();
cy.getByTestId('input-error-text').should('have.text', 'Required'); cy.getByTestId('input-error-text').should('have.text', 'Required');
cy.get(rawProposalData).type('Not a valid json string'); cy.getByTestId(rawProposalData).type('Not a valid json string');
cy.get(newProposalSubmitButton).click(); cy.getByTestId(newProposalSubmitButton).click();
cy.getByTestId('input-error-text').should( cy.getByTestId('input-error-text').should(
'have.text', 'have.text',
'Must be valid JSON' 'Must be valid JSON'
@ -283,22 +285,22 @@ context(
submitUniqueRawProposal({ proposalTitle: proposalTitle }); submitUniqueRawProposal({ proposalTitle: proposalTitle });
ethereumWalletConnect(); ethereumWalletConnect();
stakingPageDisassociateTokens('0.0001'); stakingPageDisassociateTokens('0.0001');
cy.get(vegaWallet) cy.getByTestId(vegaWallet)
.first() .first()
.within(() => { .within(() => {
cy.get(vegaWalletAssociatedBalance, txTimeout).should( cy.getByTestId(vegaWalletAssociatedBalance, txTimeout).should(
'contain', 'contain',
'0.9999' '0.9999'
); );
}); });
navigateTo(navigation.proposals); navigateTo(navigation.proposals);
getProposalFromTitle(proposalTitle).within(() => getProposalFromTitle(proposalTitle).within(() =>
cy.get(viewProposalButton).click() cy.getByTestId(viewProposalButton).click()
); );
cy.contains('Vote breakdown').should('be.visible', { cy.contains('Vote breakdown').should('be.visible', {
timeout: 10000, timeout: 10000,
}); });
cy.get(voteButtons).should('not.exist'); cy.getByTestId(voteButtons).should('not.exist');
cy.getByTestId('min-proposal-requirements').should( cy.getByTestId('min-proposal-requirements').should(
'have.text', 'have.text',
`You must have at least ${this.minVoterBalance} VEGA associated to vote on this proposal` `You must have at least ${this.minVoterBalance} VEGA associated to vote on this proposal`
@ -311,20 +313,20 @@ context(
cy.get('[data-testid="disconnect"]').click(); cy.get('[data-testid="disconnect"]').click();
cy.get<testFreeformProposal>('@rawProposal').then((rawProposal) => { cy.get<testFreeformProposal>('@rawProposal').then((rawProposal) => {
getProposalFromTitle(rawProposal.rationale.title).within(() => getProposalFromTitle(rawProposal.rationale.title).within(() =>
cy.get(viewProposalButton).click() cy.getByTestId(viewProposalButton).click()
); );
}); });
// 3001-VOTE-075 // 3001-VOTE-075
// 3001-VOTE-076 // 3001-VOTE-076
cy.get(connectToVegaWalletButton) cy.getByTestId(connectToVegaWalletButton)
.should('be.visible') .should('be.visible')
.and('have.text', 'Connect Vega wallet') .and('have.text', 'Connect Vega wallet')
.click(); .click();
cy.getByTestId('connector-jsonRpc').click(); cy.getByTestId('connector-jsonRpc').click();
cy.get(vegaWalletNameElement).should('be.visible'); cy.getByTestId(vegaWalletNameElement).should('be.visible');
cy.get(connectToVegaWalletButton).should('not.exist'); cy.getByTestId(connectToVegaWalletButton).should('not.exist');
// 3001-VOTE-100 // 3001-VOTE-100
cy.get(vegaWalletAssociatedBalance, txTimeout).contains( cy.getByTestId(vegaWalletAssociatedBalance, txTimeout).contains(
'1.00', '1.00',
txTimeout txTimeout
); );

View File

@ -31,27 +31,25 @@ import {
} from '../../support/wallet-functions'; } from '../../support/wallet-functions';
const proposalListItem = '[data-testid="proposals-list-item"]'; const proposalListItem = '[data-testid="proposals-list-item"]';
const openProposals = '[data-testid="open-proposals"]'; const openProposals = 'open-proposals';
const proposalType = '[data-testid="proposal-type"]'; const proposalType = 'proposal-type';
const proposalDetails = '[data-testid="proposal-details"]'; const proposalDetails = 'proposal-details';
const newProposalSubmitButton = '[data-testid="proposal-submit"]'; const newProposalSubmitButton = 'proposal-submit';
const proposalVoteDeadline = '[data-testid="proposal-vote-deadline"]'; const proposalVoteDeadline = 'proposal-vote-deadline';
const proposalParameterSelect = '[data-testid="proposal-parameter-select"]'; const proposalParameterSelect = 'proposal-parameter-select';
const proposalMarketSelect = '[data-testid="proposal-market-select"]'; const proposalMarketSelect = 'proposal-market-select';
const newProposalTitle = '[data-testid="proposal-title"]'; const newProposalTitle = 'proposal-title';
const newProposalDescription = '[data-testid="proposal-description"]'; const newProposalDescription = 'proposal-description';
const newProposalTerms = '[data-testid="proposal-terms"]'; const newProposalTerms = 'proposal-terms';
const newProposedParameterValue = const newProposedParameterValue = 'selected-proposal-param-new-value';
'[data-testid="selected-proposal-param-new-value"]'; const minVoteDeadline = 'min-vote';
const minVoteDeadline = '[data-testid="min-vote"]'; const maxVoteDeadline = 'max-vote';
const maxVoteDeadline = '[data-testid="max-vote"]'; const minValidationDeadline = 'min-validation';
const minValidationDeadline = '[data-testid="min-validation"]'; const minEnactDeadline = 'min-enactment';
const minEnactDeadline = '[data-testid="min-enactment"]'; const maxEnactDeadline = 'max-enactment';
const maxEnactDeadline = '[data-testid="max-enactment"]'; const inputError = 'input-error-text';
const inputError = '[data-testid="input-error-text"]'; const enactmentDeadlineError = 'enactment-before-voting-deadline';
const enactmentDeadlineError = const proposalDownloadBtn = 'proposal-download-json';
'[data-testid="enactment-before-voting-deadline"]';
const proposalDownloadBtn = '[data-testid="proposal-download-json"]';
const feedbackError = '[data-testid="Error"]'; const feedbackError = '[data-testid="Error"]';
const viewProposalBtn = 'view-proposal-btn'; const viewProposalBtn = 'view-proposal-btn';
const liquidityVoteStatus = 'liquidity-votes-status'; const liquidityVoteStatus = 'liquidity-votes-status';
@ -88,18 +86,20 @@ context(
it('Unable to submit network parameter with missing/invalid fields', function () { it('Unable to submit network parameter with missing/invalid fields', function () {
navigateTo(navigation.proposals); navigateTo(navigation.proposals);
goToMakeNewProposal(governanceProposalType.NETWORK_PARAMETER); goToMakeNewProposal(governanceProposalType.NETWORK_PARAMETER);
cy.get(proposalDownloadBtn).click(); cy.getByTestId(proposalDownloadBtn).click();
cy.get(inputError).should('have.length', 3); cy.getByTestId(inputError).should('have.length', 3);
cy.get(newProposalTitle).type( cy.getByTestId(newProposalTitle).type(
'Invalid update network parameter proposal' 'Invalid update network parameter proposal'
); );
cy.get(newProposalDescription).type('E2E invalid test for proposals'); cy.getByTestId(newProposalDescription).type(
cy.get(proposalParameterSelect).select( 'E2E invalid test for proposals'
);
cy.getByTestId(proposalParameterSelect).select(
'spam_protection_proposal_min_tokens' 'spam_protection_proposal_min_tokens'
); );
cy.get(newProposedParameterValue).type('0'); cy.getByTestId(newProposedParameterValue).type('0');
cy.get(proposalVoteDeadline).clear().type('0'); cy.getByTestId(proposalVoteDeadline).clear().type('0');
cy.get(proposalDownloadBtn) cy.getByTestId(proposalDownloadBtn)
.click() .click()
.then(() => { .then(() => {
cy.wrap( cy.wrap(
@ -109,7 +109,7 @@ context(
submitUniqueRawProposal({ proposalBody: filePath, submit: false }); submitUniqueRawProposal({ proposalBody: filePath, submit: false });
}); });
}); });
cy.get(newProposalSubmitButton).click(); cy.getByTestId(newProposalSubmitButton).click();
validateDialogContentMsg('PROPOSAL_ERROR_CLOSE_TIME_TOO_SOON'); validateDialogContentMsg('PROPOSAL_ERROR_CLOSE_TIME_TOO_SOON');
}); });
@ -117,29 +117,33 @@ context(
it('Able to download and submit network param proposal', function () { it('Able to download and submit network param proposal', function () {
goToMakeNewProposal(governanceProposalType.NETWORK_PARAMETER); goToMakeNewProposal(governanceProposalType.NETWORK_PARAMETER);
// 3007-PNEC-006 // 3007-PNEC-006
cy.get(newProposalTitle) cy.getByTestId(newProposalTitle)
.siblings() .siblings()
.should('contain.text', '(100 characters or less)'); .should('contain.text', '(100 characters or less)');
// 3007-PNEC-004 3007-PNEC-005 // 3007-PNEC-004 3007-PNEC-005
cy.get(newProposalTitle).type('Test update network parameter proposal'); cy.getByTestId(newProposalTitle).type(
'Test update network parameter proposal'
);
// 3007-PNEC-009 // 3007-PNEC-009
cy.get(newProposalDescription) cy.getByTestId(newProposalDescription)
.siblings() .siblings()
.should('contain.text', '(20,000 characters or less)'); .should('contain.text', '(20,000 characters or less)');
// 3007-PNEC-007 3007-PNEC-008 // 3007-PNEC-007 3007-PNEC-008
cy.get(newProposalDescription).type('E2E test for downloading proposals'); cy.getByTestId(newProposalDescription).type(
'E2E test for downloading proposals'
);
// 3007-PNEC-010 // 3007-PNEC-010
cy.get(proposalParameterSelect).select( cy.getByTestId(proposalParameterSelect).select(
'governance_proposal_asset_minClose' 'governance_proposal_asset_minClose'
); );
// 3007-PNEC-011 // 3007-PNEC-011
cy.get(newProposedParameterValue).type('10s'); cy.getByTestId(newProposedParameterValue).type('10s');
// 3007-PNEC-012 // 3007-PNEC-012
cy.get(proposalVoteDeadline).clear().type('2'); cy.getByTestId(proposalVoteDeadline).clear().type('2');
// 3007-PNEC-013 3007-PNEC-014 // 3007-PNEC-013 3007-PNEC-014
cy.getByTestId('voting-date').invoke('text').should('not.be.empty'); cy.getByTestId('voting-date').invoke('text').should('not.be.empty');
// 3007-PNEC-015 // 3007-PNEC-015
cy.get(maxEnactDeadline).click(); cy.getByTestId(maxEnactDeadline).click();
// 3007-PNEC-016 // 3007-PNEC-016
cy.getByTestId('enactment-date').invoke('text').should('not.be.empty'); cy.getByTestId('enactment-date').invoke('text').should('not.be.empty');
// 3007-PNEC-017 // 3007-PNEC-017
@ -148,7 +152,7 @@ context(
).should('be.visible'); ).should('be.visible');
// 3007-PNE-018 // 3007-PNE-018
cy.log('Download updated proposal file'); cy.log('Download updated proposal file');
cy.get(proposalDownloadBtn) cy.getByTestId(proposalDownloadBtn)
.should('be.visible') .should('be.visible')
.click() .click()
.then(() => { .then(() => {
@ -178,19 +182,21 @@ context(
it('Unable to submit network parameter proposal with vote deadline above enactment deadline', function () { it('Unable to submit network parameter proposal with vote deadline above enactment deadline', function () {
navigateTo(navigation.proposals); navigateTo(navigation.proposals);
goToMakeNewProposal(governanceProposalType.NETWORK_PARAMETER); goToMakeNewProposal(governanceProposalType.NETWORK_PARAMETER);
cy.get(newProposalTitle).type('Test update network parameter proposal'); cy.getByTestId(newProposalTitle).type(
cy.get(newProposalDescription).type('invalid deadlines'); 'Test update network parameter proposal'
cy.get(proposalParameterSelect).select( );
cy.getByTestId(newProposalDescription).type('invalid deadlines');
cy.getByTestId(proposalParameterSelect).select(
'spam_protection_proposal_min_tokens' 'spam_protection_proposal_min_tokens'
); );
cy.get(newProposedParameterValue).type('0'); cy.getByTestId(newProposedParameterValue).type('0');
cy.get(proposalVoteDeadline).clear().type('0'); cy.getByTestId(proposalVoteDeadline).clear().type('0');
cy.get(maxVoteDeadline).click(); cy.getByTestId(maxVoteDeadline).click();
cy.get(enactmentDeadlineError).should( cy.getByTestId(enactmentDeadlineError).should(
'have.text', 'have.text',
'The proposal will fail if enactment is earlier than the voting deadline' 'The proposal will fail if enactment is earlier than the voting deadline'
); );
cy.get(proposalDownloadBtn) cy.getByTestId(proposalDownloadBtn)
.should('be.visible') .should('be.visible')
.click() .click()
.then(() => { .then(() => {
@ -201,7 +207,7 @@ context(
submitUniqueRawProposal({ proposalBody: filePath, submit: false }); submitUniqueRawProposal({ proposalBody: filePath, submit: false });
}); });
}); });
cy.get(newProposalSubmitButton).click(); cy.getByTestId(newProposalSubmitButton).click();
validateFeedBackMsg( validateFeedBackMsg(
'Invalid params: proposal_submission.terms.closing_timestamp (cannot be after enactment time)' 'Invalid params: proposal_submission.terms.closing_timestamp (cannot be after enactment time)'
); );
@ -214,16 +220,16 @@ context(
function () { function () {
const proposalTitle = 'Test new market proposal'; const proposalTitle = 'Test new market proposal';
goToMakeNewProposal(governanceProposalType.NEW_MARKET); goToMakeNewProposal(governanceProposalType.NEW_MARKET);
cy.get(newProposalTitle).type('Test new market proposal'); cy.getByTestId(newProposalTitle).type('Test new market proposal');
cy.get(newProposalDescription).type('E2E test for proposals'); cy.getByTestId(newProposalDescription).type('E2E test for proposals');
cy.fixture('/proposals/new-market').then((newMarketProposal) => { cy.fixture('/proposals/new-market').then((newMarketProposal) => {
const newMarketPayload = JSON.stringify(newMarketProposal); const newMarketPayload = JSON.stringify(newMarketProposal);
cy.get(newProposalTerms).type(newMarketPayload, { cy.getByTestId(newProposalTerms).type(newMarketPayload, {
parseSpecialCharSequences: false, parseSpecialCharSequences: false,
delay: 2, delay: 2,
}); });
}); });
cy.get(proposalDownloadBtn) cy.getByTestId(proposalDownloadBtn)
.should('be.visible') .should('be.visible')
.click() .click()
.then(() => { .then(() => {
@ -259,19 +265,19 @@ context(
'Invalid params: the transaction does not use a valid Vega command: unknown field "invalid" in vega.NewMarket'; 'Invalid params: the transaction does not use a valid Vega command: unknown field "invalid" in vega.NewMarket';
goToMakeNewProposal(governanceProposalType.NEW_MARKET); goToMakeNewProposal(governanceProposalType.NEW_MARKET);
cy.get(proposalDownloadBtn).should('be.visible').click(); cy.getByTestId(proposalDownloadBtn).should('be.visible').click();
cy.get(inputError).should('have.length', 3); cy.getByTestId(inputError).should('have.length', 3);
cy.get(newProposalTitle).type('Test new market proposal'); cy.getByTestId(newProposalTitle).type('Test new market proposal');
cy.get(newProposalDescription).type('E2E test for proposals'); cy.getByTestId(newProposalDescription).type('E2E test for proposals');
cy.fixture('/proposals/new-market').then((newMarketProposal) => { cy.fixture('/proposals/new-market').then((newMarketProposal) => {
newMarketProposal.invalid = 'I am an invalid field'; newMarketProposal.invalid = 'I am an invalid field';
const newMarketPayload = JSON.stringify(newMarketProposal); const newMarketPayload = JSON.stringify(newMarketProposal);
cy.get(newProposalTerms).type(newMarketPayload, { cy.getByTestId(newProposalTerms).type(newMarketPayload, {
parseSpecialCharSequences: false, parseSpecialCharSequences: false,
delay: 2, delay: 2,
}); });
}); });
cy.get(proposalDownloadBtn) cy.getByTestId(proposalDownloadBtn)
.should('be.visible') .should('be.visible')
.click() .click()
.then(() => { .then(() => {
@ -282,7 +288,7 @@ context(
submitUniqueRawProposal({ proposalBody: filePath, submit: false }); submitUniqueRawProposal({ proposalBody: filePath, submit: false });
}); });
}); });
cy.get(newProposalSubmitButton).should('be.visible').click(); cy.getByTestId(newProposalSubmitButton).should('be.visible').click();
cy.contains('Transaction failed', proposalTimeout).should('be.visible'); cy.contains('Transaction failed', proposalTimeout).should('be.visible');
validateFeedBackMsg(errorMsg); validateFeedBackMsg(errorMsg);
}); });
@ -293,17 +299,19 @@ context(
switchVegaWalletPubKey(); switchVegaWalletPubKey();
stakingPageAssociateTokens('1'); stakingPageAssociateTokens('1');
goToMakeNewProposal(governanceProposalType.UPDATE_MARKET); goToMakeNewProposal(governanceProposalType.UPDATE_MARKET);
cy.get(newProposalTitle).type('Test update market proposal - rejected'); cy.getByTestId(newProposalTitle).type(
cy.get(newProposalDescription).type('E2E test for proposals'); 'Test update market proposal - rejected'
cy.get(proposalMarketSelect).select('Test market 1'); );
cy.getByTestId(newProposalDescription).type('E2E test for proposals');
cy.getByTestId(proposalMarketSelect).select('Test market 1');
cy.fixture('/proposals/update-market').then((updateMarketProposal) => { cy.fixture('/proposals/update-market').then((updateMarketProposal) => {
const newUpdateMarketProposal = JSON.stringify(updateMarketProposal); const newUpdateMarketProposal = JSON.stringify(updateMarketProposal);
cy.get(newProposalTerms).type(newUpdateMarketProposal, { cy.getByTestId(newProposalTerms).type(newUpdateMarketProposal, {
parseSpecialCharSequences: false, parseSpecialCharSequences: false,
delay: 2, delay: 2,
}); });
}); });
cy.get(proposalDownloadBtn) cy.getByTestId(proposalDownloadBtn)
.should('be.visible') .should('be.visible')
.click() .click()
.then(() => { .then(() => {
@ -314,7 +322,7 @@ context(
submitUniqueRawProposal({ proposalBody: filePath, submit: false }); submitUniqueRawProposal({ proposalBody: filePath, submit: false });
}); });
}); });
cy.get(newProposalSubmitButton).should('be.visible').click(); cy.getByTestId(newProposalSubmitButton).should('be.visible').click();
cy.contains('Proposal rejected', proposalTimeout).should('be.visible'); cy.contains('Proposal rejected', proposalTimeout).should('be.visible');
validateDialogContentMsg('PROPOSAL_ERROR_INSUFFICIENT_EQUITY_LIKE_SHARE'); validateDialogContentMsg('PROPOSAL_ERROR_INSUFFICIENT_EQUITY_LIKE_SHARE');
closeDialog(); closeDialog();
@ -332,17 +340,19 @@ context(
vegaWalletPublicKey vegaWalletPublicKey
); );
goToMakeNewProposal(governanceProposalType.UPDATE_MARKET); goToMakeNewProposal(governanceProposalType.UPDATE_MARKET);
cy.get(newProposalTitle).type('Test update market proposal - rejected'); cy.getByTestId(newProposalTitle).type(
cy.get(newProposalDescription).type('E2E test for proposals'); 'Test update market proposal - rejected'
cy.get(proposalMarketSelect).select('Test market 1'); );
cy.getByTestId(newProposalDescription).type('E2E test for proposals');
cy.getByTestId(proposalMarketSelect).select('Test market 1');
cy.fixture('/proposals/update-market').then((updateMarketProposal) => { cy.fixture('/proposals/update-market').then((updateMarketProposal) => {
const newUpdateMarketProposal = JSON.stringify(updateMarketProposal); const newUpdateMarketProposal = JSON.stringify(updateMarketProposal);
cy.get(newProposalTerms).type(newUpdateMarketProposal, { cy.getByTestId(newProposalTerms).type(newUpdateMarketProposal, {
parseSpecialCharSequences: false, parseSpecialCharSequences: false,
delay: 2, delay: 2,
}); });
}); });
cy.get(proposalDownloadBtn) cy.getByTestId(proposalDownloadBtn)
.should('be.visible') .should('be.visible')
.click() .click()
.then(() => { .then(() => {
@ -353,7 +363,7 @@ context(
submitUniqueRawProposal({ proposalBody: filePath, submit: false }); submitUniqueRawProposal({ proposalBody: filePath, submit: false });
}); });
}); });
cy.get(newProposalSubmitButton).should('be.visible').click(); cy.getByTestId(newProposalSubmitButton).should('be.visible').click();
cy.contains('Transaction failed', proposalTimeout).should('be.visible'); cy.contains('Transaction failed', proposalTimeout).should('be.visible');
validateFeedBackMsg( validateFeedBackMsg(
'Network error: the network blocked the transaction through the spam protection: party has insufficient associated governance tokens in their staking account to submit proposal request (ABCI code 89)' 'Network error: the network blocked the transaction through the spam protection: party has insufficient associated governance tokens in their staking account to submit proposal request (ABCI code 89)'
@ -368,9 +378,9 @@ context(
vegaWalletPublicKey vegaWalletPublicKey
); );
goToMakeNewProposal(governanceProposalType.UPDATE_MARKET); goToMakeNewProposal(governanceProposalType.UPDATE_MARKET);
cy.get(newProposalTitle).type('Test update market proposal'); cy.getByTestId(newProposalTitle).type('Test update market proposal');
cy.get(newProposalDescription).type('E2E test for proposals'); cy.getByTestId(newProposalDescription).type('E2E test for proposals');
cy.get(proposalMarketSelect).select('Test market 1'); cy.getByTestId(proposalMarketSelect).select('Test market 1');
cy.get('[data-testid="update-market-details"]').within(() => { cy.get('[data-testid="update-market-details"]').within(() => {
cy.get('dd').eq(0).should('have.text', 'Test market 1'); cy.get('dd').eq(0).should('have.text', 'Test market 1');
cy.get('dd').eq(1).should('have.text', 'TEST.24h'); cy.get('dd').eq(1).should('have.text', 'TEST.24h');
@ -385,12 +395,12 @@ context(
}); });
cy.fixture('/proposals/update-market').then((updateMarketProposal) => { cy.fixture('/proposals/update-market').then((updateMarketProposal) => {
const newUpdateMarketProposal = JSON.stringify(updateMarketProposal); const newUpdateMarketProposal = JSON.stringify(updateMarketProposal);
cy.get(newProposalTerms).type(newUpdateMarketProposal, { cy.getByTestId(newProposalTerms).type(newUpdateMarketProposal, {
parseSpecialCharSequences: false, parseSpecialCharSequences: false,
delay: 2, delay: 2,
}); });
}); });
cy.get(proposalDownloadBtn) cy.getByTestId(proposalDownloadBtn)
.should('be.visible') .should('be.visible')
.click() .click()
.then(() => { .then(() => {
@ -437,19 +447,19 @@ context(
it('Able to submit new asset proposal using min deadlines', function () { it('Able to submit new asset proposal using min deadlines', function () {
const proposalTitle = 'Test new asset proposal'; const proposalTitle = 'Test new asset proposal';
goToMakeNewProposal(governanceProposalType.NEW_ASSET); goToMakeNewProposal(governanceProposalType.NEW_ASSET);
cy.get(newProposalTitle).type(proposalTitle); cy.getByTestId(newProposalTitle).type(proposalTitle);
cy.get(newProposalDescription).type('E2E test for proposals'); cy.getByTestId(newProposalDescription).type('E2E test for proposals');
cy.fixture('/proposals/new-asset').then((newAssetProposal) => { cy.fixture('/proposals/new-asset').then((newAssetProposal) => {
const newAssetPayload = JSON.stringify(newAssetProposal); const newAssetPayload = JSON.stringify(newAssetProposal);
cy.get(newProposalTerms).type(newAssetPayload, { cy.getByTestId(newProposalTerms).type(newAssetPayload, {
parseSpecialCharSequences: false, parseSpecialCharSequences: false,
delay: 2, delay: 2,
}); });
}); });
cy.get(minVoteDeadline).click(); cy.getByTestId(minVoteDeadline).click();
cy.get(minValidationDeadline).click(); cy.getByTestId(minValidationDeadline).click();
cy.get(minEnactDeadline).click(); cy.getByTestId(minEnactDeadline).click();
cy.get(proposalDownloadBtn) cy.getByTestId(proposalDownloadBtn)
.should('be.visible') .should('be.visible')
.click() .click()
.then(() => { .then(() => {
@ -460,9 +470,9 @@ context(
submitUniqueRawProposal({ proposalBody: filePath, submit: false }); // 3005-PASN-003 submitUniqueRawProposal({ proposalBody: filePath, submit: false }); // 3005-PASN-003
}); });
}); });
cy.get(newProposalSubmitButton).should('be.visible').click(); cy.getByTestId(newProposalSubmitButton).should('be.visible').click();
closeDialog(); closeDialog();
cy.get(newProposalSubmitButton).should('be.visible').click(); cy.getByTestId(newProposalSubmitButton).should('be.visible').click();
// cannot submit a proposal with ERC20 address already in use // cannot submit a proposal with ERC20 address already in use
cy.contains('Proposal rejected', proposalTimeout).should('be.visible'); cy.contains('Proposal rejected', proposalTimeout).should('be.visible');
validateDialogContentMsg('PROPOSAL_ERROR_ERC20_ADDRESS_ALREADY_IN_USE'); validateDialogContentMsg('PROPOSAL_ERROR_ERC20_ADDRESS_ALREADY_IN_USE');
@ -483,8 +493,8 @@ context(
it('Unable to submit new asset proposal with missing/invalid fields', function () { it('Unable to submit new asset proposal with missing/invalid fields', function () {
goToMakeNewProposal(governanceProposalType.NEW_ASSET); goToMakeNewProposal(governanceProposalType.NEW_ASSET);
cy.get(proposalDownloadBtn).should('be.visible').click(); cy.getByTestId(proposalDownloadBtn).should('be.visible').click();
cy.get(inputError).should('have.length', 3); cy.getByTestId(inputError).should('have.length', 3);
}); });
it('Able to submit update asset proposal using min deadline', function () { it('Able to submit update asset proposal using min deadline', function () {
@ -493,9 +503,9 @@ context(
goToMakeNewProposal(governanceProposalType.UPDATE_ASSET); goToMakeNewProposal(governanceProposalType.UPDATE_ASSET);
enterUpdateAssetProposalDetails(); enterUpdateAssetProposalDetails();
cy.get(minVoteDeadline).click(); cy.getByTestId(minVoteDeadline).click();
cy.get(minEnactDeadline).click(); cy.getByTestId(minEnactDeadline).click();
cy.get(proposalDownloadBtn) cy.getByTestId(proposalDownloadBtn)
.should('be.visible') .should('be.visible')
.click() .click()
.then(() => { .then(() => {
@ -507,13 +517,16 @@ context(
}); });
}); });
navigateTo(navigation.proposals); navigateTo(navigation.proposals);
cy.get(openProposals).within(() => { cy.getByTestId(openProposals).within(() => {
cy.get(proposalType) cy.getByTestId(proposalType)
.contains('Update asset') .contains('Update asset')
.parentsUntil(proposalListItem) .parentsUntil(proposalListItem)
.last() .last()
.within(() => { .within(() => {
cy.get(proposalDetails).should('contain.text', assetId.slice(0, 6)); // 3001-VOTE-029 cy.getByTestId(proposalDetails).should(
'contain.text',
assetId.slice(0, 6)
); // 3001-VOTE-029
cy.getByTestId(viewProposalBtn).click(); cy.getByTestId(viewProposalBtn).click();
}); });
}); });
@ -533,9 +546,9 @@ context(
it('Able to submit update asset proposal using max deadline', function () { it('Able to submit update asset proposal using max deadline', function () {
goToMakeNewProposal(governanceProposalType.UPDATE_ASSET); goToMakeNewProposal(governanceProposalType.UPDATE_ASSET);
enterUpdateAssetProposalDetails(); enterUpdateAssetProposalDetails();
cy.get(maxVoteDeadline).click(); cy.getByTestId(maxVoteDeadline).click();
cy.get(maxEnactDeadline).click(); cy.getByTestId(maxEnactDeadline).click();
cy.get(proposalDownloadBtn) cy.getByTestId(proposalDownloadBtn)
.should('be.visible') .should('be.visible')
.click() .click()
.then(() => { .then(() => {
@ -550,36 +563,36 @@ context(
it('Unable to submit edit asset proposal with missing/invalid fields', function () { it('Unable to submit edit asset proposal with missing/invalid fields', function () {
goToMakeNewProposal(governanceProposalType.UPDATE_ASSET); goToMakeNewProposal(governanceProposalType.UPDATE_ASSET);
cy.get(proposalDownloadBtn).should('be.visible').click(); cy.getByTestId(proposalDownloadBtn).should('be.visible').click();
cy.get(inputError).should('have.length', 3); cy.getByTestId(inputError).should('have.length', 3);
}); });
it('Able to download and submit freeform proposal', function () { it('Able to download and submit freeform proposal', function () {
goToMakeNewProposal(governanceProposalType.FREEFORM); goToMakeNewProposal(governanceProposalType.FREEFORM);
// 3008-PFRO-006 // 3008-PFRO-006
cy.get(newProposalTitle) cy.getByTestId(newProposalTitle)
.siblings() .siblings()
.should('contain.text', '(100 characters or less)'); // 3008-PFRO-007 .should('contain.text', '(100 characters or less)'); // 3008-PFRO-007
// 3008-PFRO-005 // 3008-PFRO-005
cy.get(newProposalTitle).type('Test freeform proposal form'); cy.getByTestId(newProposalTitle).type('Test freeform proposal form');
// 3008-PFRO-009 // 3008-PFRO-009
cy.get(newProposalDescription) cy.getByTestId(newProposalDescription)
.siblings() .siblings()
.should('contain.text', '(20,000 characters or less)'); // 3008-PFRO-010 .should('contain.text', '(20,000 characters or less)'); // 3008-PFRO-010
// 3008-PFRO-008 3002-PROP-012 3002-PROP-016 // 3008-PFRO-008 3002-PROP-012 3002-PROP-016
cy.get(newProposalDescription).type( cy.getByTestId(newProposalDescription).type(
'E2E test for downloading freeform proposal' 'E2E test for downloading freeform proposal'
); );
// 3008-PFRO-012 // 3008-PFRO-012
cy.get(minVoteDeadline).should('exist'); // 3002-PROP-008 cy.getByTestId(minVoteDeadline).should('exist'); // 3002-PROP-008
cy.get(maxVoteDeadline).should('exist'); cy.getByTestId(maxVoteDeadline).should('exist');
// 3008-PFRO-011 // 3008-PFRO-011
cy.get(proposalVoteDeadline).clear().type('2'); cy.getByTestId(proposalVoteDeadline).clear().type('2');
// 3008-PFRO-013 3008-PFRO-014 // 3008-PFRO-013 3008-PFRO-014
cy.getByTestId('voting-date').invoke('text').should('not.be.empty'); cy.getByTestId('voting-date').invoke('text').should('not.be.empty');
// 3008-PFRO-015 // 3008-PFRO-015
cy.log('Download updated proposal file'); cy.log('Download updated proposal file');
cy.get(proposalDownloadBtn) cy.getByTestId(proposalDownloadBtn)
.should('be.visible') .should('be.visible')
.click() .click()
.then(() => { .then(() => {
@ -613,11 +626,11 @@ context(
} }
function enterUpdateAssetProposalDetails() { function enterUpdateAssetProposalDetails() {
cy.get(newProposalTitle).type('Test update asset proposal'); cy.getByTestId(newProposalTitle).type('Test update asset proposal');
cy.get(newProposalDescription).type('E2E test for proposals'); cy.getByTestId(newProposalDescription).type('E2E test for proposals');
cy.fixture('/proposals/update-asset').then((newAssetProposal) => { cy.fixture('/proposals/update-asset').then((newAssetProposal) => {
const newAssetPayload = JSON.stringify(newAssetProposal); const newAssetPayload = JSON.stringify(newAssetProposal);
cy.get(newProposalTerms).type(newAssetPayload, { cy.getByTestId(newProposalTerms).type(newAssetPayload, {
parseSpecialCharSequences: false, parseSpecialCharSequences: false,
delay: 2, delay: 2,
}); });

View File

@ -24,12 +24,12 @@ import { ethereumWalletConnect } from '../../support/wallet-eth.functions';
import { vegaWalletSetSpecifiedApprovalAmount } from '../../support/wallet-functions'; import { vegaWalletSetSpecifiedApprovalAmount } from '../../support/wallet-functions';
const proposalListItem = 'proposals-list-item'; const proposalListItem = 'proposals-list-item';
const openProposals = '[data-testid="open-proposals"]'; const openProposals = 'open-proposals';
const voteStatus = 'vote-status'; const voteStatus = 'vote-status';
const proposalType = 'proposal-type'; const proposalType = 'proposal-type';
const proposalStatus = 'proposal-status'; const proposalStatus = 'proposal-status';
const proposalClosingDate = '[data-testid="vote-details"]'; const proposalClosingDate = 'vote-details';
const viewProposalButton = '[data-testid="view-proposal-btn"]'; const viewProposalButton = 'view-proposal-btn';
const voteBreakDownToggle = 'vote-breakdown-toggle'; const voteBreakDownToggle = 'vote-breakdown-toggle';
describe('Governance flow for proposal list', { tags: '@slow' }, function () { describe('Governance flow for proposal list', { tags: '@slow' }, function () {
@ -62,13 +62,13 @@ describe('Governance flow for proposal list', { tags: '@slow' }, function () {
} }
navigateTo(navigation.proposals); navigateTo(navigation.proposals);
cy.get(openProposals).within(() => { cy.getByTestId(openProposals).within(() => {
cy.get(proposalClosingDate) cy.getByTestId(proposalClosingDate)
.first() .first()
.invoke('text') .invoke('text')
.should('match', /days|minutes/); .should('match', /days|minutes/);
cy.get(proposalClosingDate).should('contain.text', 'months'); cy.getByTestId(proposalClosingDate).should('contain.text', 'months');
cy.get(proposalClosingDate).last().should('contain.text', 'year'); cy.getByTestId(proposalClosingDate).last().should('contain.text', 'year');
}); });
}); });
@ -106,7 +106,7 @@ describe('Governance flow for proposal list', { tags: '@slow' }, function () {
createRawProposal(this.minProposerBalance); createRawProposal(this.minProposerBalance);
cy.get<testFreeformProposal>('@rawProposal').then((rawProposal) => { cy.get<testFreeformProposal>('@rawProposal').then((rawProposal) => {
getProposalFromTitle(rawProposal.rationale.title).within(() => { getProposalFromTitle(rawProposal.rationale.title).within(() => {
cy.get(viewProposalButton).should('be.visible'); cy.getByTestId(viewProposalButton).should('be.visible');
cy.getByTestId(proposalType).should('have.text', 'Freeform'); cy.getByTestId(proposalType).should('have.text', 'Freeform');
cy.getByTestId(proposalStatus).should('have.text', 'Open'); cy.getByTestId(proposalStatus).should('have.text', 'Open');
}); });
@ -124,13 +124,13 @@ describe('Governance flow for proposal list', { tags: '@slow' }, function () {
'have.text', 'have.text',
'Participation not reached' 'Participation not reached'
); );
cy.get(viewProposalButton).click(); cy.getByTestId(viewProposalButton).click();
}); });
voteForProposal('for'); voteForProposal('for');
navigateTo(navigation.proposals); navigateTo(navigation.proposals);
getProposalFromTitle(proposalTitle).within(() => { getProposalFromTitle(proposalTitle).within(() => {
cy.getByTestId(voteStatus).should('have.text', 'Set to pass'); cy.getByTestId(voteStatus).should('have.text', 'Set to pass');
cy.get(viewProposalButton).click(); cy.getByTestId(viewProposalButton).click();
}); });
cy.getByTestId(voteBreakDownToggle).click(); cy.getByTestId(voteBreakDownToggle).click();
getProposalInformationFromTable('Token participation met') getProposalInformationFromTable('Token participation met')

View File

@ -17,8 +17,7 @@ import {
} from '../../support/wallet-functions'; } from '../../support/wallet-functions';
const vegaAssetAddress = '0x67175Da1D5e966e40D11c4B2519392B2058373de'; const vegaAssetAddress = '0x67175Da1D5e966e40D11c4B2519392B2058373de';
const vegaWalletUnstakedBalance = const vegaWalletUnstakedBalance = 'vega-wallet-balance-unstaked';
'[data-testid="vega-wallet-balance-unstaked"]';
const rewardsTable = 'epoch-total-rewards-table'; const rewardsTable = 'epoch-total-rewards-table';
const txTimeout = Cypress.env('txTimeout'); const txTimeout = Cypress.env('txTimeout');
const rewardsTimeOut = { timeout: 60000 }; const rewardsTimeOut = { timeout: 60000 };
@ -40,7 +39,7 @@ context('rewards - flow', { tags: '@slow' }, function () {
cy.associateTokensToVegaWallet('6000'); cy.associateTokensToVegaWallet('6000');
navigateTo(navigation.validators); navigateTo(navigation.validators);
cy.VegaWalletTopUpRewardsPool(); cy.VegaWalletTopUpRewardsPool();
cy.get(vegaWalletUnstakedBalance, txTimeout).should( cy.getByTestId(vegaWalletUnstakedBalance, txTimeout).should(
'contain', 'contain',
'6,000.0', '6,000.0',
txTimeout txTimeout

View File

@ -4,7 +4,6 @@ import {
verifyStakedBalance, verifyStakedBalance,
verifyEthWalletTotalAssociatedBalance, verifyEthWalletTotalAssociatedBalance,
verifyEthWalletAssociatedBalance, verifyEthWalletAssociatedBalance,
waitForSpinner,
navigateTo, navigateTo,
navigation, navigation,
turnTelemetryOff, turnTelemetryOff,
@ -58,6 +57,7 @@ context(
before('visit staking tab and connect vega wallet', function () { before('visit staking tab and connect vega wallet', function () {
cy.visit('/'); cy.visit('/');
ethereumWalletConnect(); ethereumWalletConnect();
cy.connectVegaWallet();
vegaWalletSetSpecifiedApprovalAmount('1000'); vegaWalletSetSpecifiedApprovalAmount('1000');
}); });
@ -67,10 +67,9 @@ context(
function () { function () {
cy.clearLocalStorage(); cy.clearLocalStorage();
turnTelemetryOff(); turnTelemetryOff();
cy.reload(); // Go to homepage to allow wallet teardown without epoch timer refreshing page
waitForSpinner(); navigateTo(navigation.home);
cy.connectVegaWallet(); vegaWalletTeardown();
ethereumWalletConnect();
navigateTo(navigation.validators); navigateTo(navigation.validators);
} }
); );
@ -128,6 +127,7 @@ context(
cy.getByTestId('staked-by-user-tooltip') cy.getByTestId('staked-by-user-tooltip')
.first() .first()
.should('have.text', 'Staked by me: 2.00'); .should('have.text', 'Staked by me: 2.00');
waitForBeginningOfEpoch();
cy.getByTestId('total-pending-stake').first().realHover(); cy.getByTestId('total-pending-stake').first().realHover();
cy.getByTestId('pending-user-stake-tooltip') cy.getByTestId('pending-user-stake-tooltip')
.first() .first()
@ -398,6 +398,7 @@ context(
vegaWalletSetSpecifiedApprovalAmount('1000'); vegaWalletSetSpecifiedApprovalAmount('1000');
cy.reload(); cy.reload();
ethereumWalletConnect(); ethereumWalletConnect();
cy.connectVegaWallet();
stakingPageAssociateTokens('3'); stakingPageAssociateTokens('3');
verifyUnstakedBalance(3.0); verifyUnstakedBalance(3.0);
cy.get('button').contains('Select a validator to nominate').click(); cy.get('button').contains('Select a validator to nominate').click();
@ -503,11 +504,6 @@ context(
); );
}); });
afterEach('Teardown Wallet', function () {
navigateTo(navigation.home);
vegaWalletTeardown();
});
function verifyNextEpochValue(amount: number) { function verifyNextEpochValue(amount: number) {
cy.getByTestId('stake-next-epoch', epochTimeout) cy.getByTestId('stake-next-epoch', epochTimeout)
.contains(amount, epochTimeout) .contains(amount, epochTimeout)

View File

@ -21,25 +21,24 @@ import {
vegaWalletTeardown, vegaWalletTeardown,
} from '../../support/wallet-functions'; } from '../../support/wallet-functions';
const ethWalletContainer = '[data-testid="ethereum-wallet"]'; const ethWalletContainer = 'ethereum-wallet';
const vegaWalletAssociatedBalance = '[data-testid="currency-value"]'; const vegaWalletAssociatedBalance = 'currency-value';
const vegaWalletUnstakedBalance = const vegaWalletUnstakedBalance = 'vega-wallet-balance-unstaked';
'[data-testid="vega-wallet-balance-unstaked"]';
const txTimeout = Cypress.env('txTimeout');
const vegaWalletPublicKeyShort = Cypress.env('vegaWalletPublicKeyShort');
const ethWalletAssociateButton = '[data-testid="associate-btn"]:visible'; const ethWalletAssociateButton = '[data-testid="associate-btn"]:visible';
const associateWalletRadioButton = '[data-testid="associate-radio-wallet"]'; const associateWalletRadioButton = 'associate-radio-wallet';
const tokenAmountInputBox = '[data-testid="token-amount-input"]'; const tokenAmountInputBox = 'token-amount-input';
const tokenSubmitButton = '[data-testid="token-input-submit-button"]'; const tokenSubmitButton = 'token-input-submit-button';
const ethWalletDissociateButton = '[href="/token/disassociate"]:visible'; const ethWalletDissociateButton = '[href="/token/disassociate"]:visible';
const vestingContractSection = '[data-testid="vega-in-vesting-contract"]'; const vestingContractSection = 'vega-in-vesting-contract';
const vegaInWalletSection = '[data-testid="vega-in-wallet"]'; const vegaInWalletSection = 'vega-in-wallet';
const connectedVegaKey = '[data-testid="connected-vega-key"]'; const connectedVegaKey = 'connected-vega-key';
const associatedKey = '[data-testid="associated-key"]'; const associatedKey = 'associated-key';
const associatedAmount = '[data-testid="associated-amount"]'; const associatedAmount = 'associated-amount';
const associateCompleteText = '[data-testid="transaction-complete-body"]'; const associateCompleteText = 'transaction-complete-body';
const disassociationWarning = '[data-testid="disassociation-warning"]'; const disassociationWarning = 'disassociation-warning';
const vegaWallet = 'aside [data-testid="vega-wallet"]'; const vegaWallet = 'aside [data-testid="vega-wallet"]';
const vegaWalletPublicKeyShort = Cypress.env('vegaWalletPublicKeyShort');
const txTimeout = Cypress.env('txTimeout');
context( context(
'Token association flow - with eth and vega wallets connected', 'Token association flow - with eth and vega wallets connected',
@ -89,12 +88,15 @@ context(
verifyEthWalletAssociatedBalance('2.0'); verifyEthWalletAssociatedBalance('2.0');
verifyEthWalletTotalAssociatedBalance('2.0'); verifyEthWalletTotalAssociatedBalance('2.0');
cy.get(vegaWallet).within(() => { cy.get(vegaWallet).within(() => {
cy.get(vegaWalletAssociatedBalance, txTimeout).should( cy.getByTestId(vegaWalletAssociatedBalance, txTimeout).should(
'contain', 'contain',
2.0 2.0
); );
}); });
cy.get(vegaWalletUnstakedBalance, txTimeout).should('contain', 2.0); cy.getByTestId(vegaWalletUnstakedBalance, txTimeout).should(
'contain',
2.0
);
} }
); );
@ -127,7 +129,7 @@ context(
verifyEthWalletAssociatedBalance('1,001.00'); verifyEthWalletAssociatedBalance('1,001.00');
verifyEthWalletTotalAssociatedBalance('7,001.00'); verifyEthWalletTotalAssociatedBalance('7,001.00');
cy.get(vegaWallet).within(() => { cy.get(vegaWallet).within(() => {
cy.get(vegaWalletAssociatedBalance, txTimeout).should( cy.getByTestId(vegaWalletAssociatedBalance, txTimeout).should(
'contain', 'contain',
'1,001.00' '1,001.00'
); );
@ -137,14 +139,20 @@ context(
it('Able to disassociate a partial amount of tokens currently associated', function () { it('Able to disassociate a partial amount of tokens currently associated', function () {
stakingPageAssociateTokens('2'); stakingPageAssociateTokens('2');
cy.get(vegaWallet).within(() => { cy.get(vegaWallet).within(() => {
cy.get(vegaWalletAssociatedBalance, txTimeout).should('contain', 2.0); cy.getByTestId(vegaWalletAssociatedBalance, txTimeout).should(
'contain',
2.0
);
}); });
cy.get('button').contains('Select a validator to nominate').click(); cy.get('button').contains('Select a validator to nominate').click();
cy.getByTestId('epoch-countdown').should('be.visible'); cy.getByTestId('epoch-countdown').should('be.visible');
stakingPageDisassociateTokens('1'); stakingPageDisassociateTokens('1');
verifyEthWalletAssociatedBalance('1.0'); verifyEthWalletAssociatedBalance('1.0');
cy.get(vegaWallet).within(() => { cy.get(vegaWallet).within(() => {
cy.get(vegaWalletAssociatedBalance, txTimeout).should('contain', 1.0); cy.getByTestId(vegaWalletAssociatedBalance, txTimeout).should(
'contain',
1.0
);
}); });
}); });
@ -154,21 +162,24 @@ context(
'Warning: Any tokens that have been nominated to a node will sacrifice rewards they are due for the current epoch. If you do not wish to sacrifice these, you should remove stake from a node at the end of an epoch before disassociation.'; 'Warning: Any tokens that have been nominated to a node will sacrifice rewards they are due for the current epoch. If you do not wish to sacrifice these, you should remove stake from a node at the end of an epoch before disassociation.';
stakingPageAssociateTokens('2'); stakingPageAssociateTokens('2');
cy.get(vegaWallet).within(() => { cy.get(vegaWallet).within(() => {
cy.get(vegaWalletAssociatedBalance, txTimeout).should('contain', 2.0); cy.getByTestId(vegaWalletAssociatedBalance, txTimeout).should(
'contain',
2.0
);
}); });
cy.get('button').contains('Select a validator to nominate').click(); cy.get('button').contains('Select a validator to nominate').click();
cy.getByTestId('epoch-countdown').should('be.visible'); cy.getByTestId('epoch-countdown').should('be.visible');
cy.get(ethWalletDissociateButton).click(); cy.get(ethWalletDissociateButton).click();
cy.get(disassociationWarning).should('contain', warningText); cy.getByTestId(disassociationWarning).should('contain', warningText);
stakingPageDisassociateAllTokens(); stakingPageDisassociateAllTokens();
cy.get(ethWalletContainer) cy.getByTestId(ethWalletContainer)
.first() .first()
.within(() => { .within(() => {
cy.contains(vegaWalletPublicKeyShort, { timeout: 20000 }).should( cy.contains(vegaWalletPublicKeyShort, { timeout: 20000 }).should(
'not.exist' 'not.exist'
); );
}); });
cy.get(ethWalletContainer) cy.getByTestId(ethWalletContainer)
.first() .first()
.within(() => { .within(() => {
cy.contains(vegaWalletPublicKeyShort, { timeout: 20000 }).should( cy.contains(vegaWalletPublicKeyShort, { timeout: 20000 }).should(
@ -176,7 +187,10 @@ context(
); );
}); });
cy.get(vegaWallet).within(() => { cy.get(vegaWallet).within(() => {
cy.get(vegaWalletAssociatedBalance, txTimeout).should('contain', 0.0); cy.getByTestId(vegaWalletAssociatedBalance, txTimeout).should(
'contain',
0.0
);
}); });
}); });
@ -198,9 +212,15 @@ context(
verifyEthWalletAssociatedBalance('2.0'); verifyEthWalletAssociatedBalance('2.0');
verifyEthWalletTotalAssociatedBalance('2.0'); verifyEthWalletTotalAssociatedBalance('2.0');
cy.get(vegaWallet).within(() => { cy.get(vegaWallet).within(() => {
cy.get(vegaWalletAssociatedBalance, txTimeout).should('contain', 2.0); cy.getByTestId(vegaWalletAssociatedBalance, txTimeout).should(
'contain',
2.0
);
}); });
cy.get(vegaWalletUnstakedBalance, txTimeout).should('contain', 2.0); cy.getByTestId(vegaWalletUnstakedBalance, txTimeout).should(
'contain',
2.0
);
stakingPageDisassociateTokens('1', { stakingPageDisassociateTokens('1', {
type: 'contract', type: 'contract',
skipConfirmation: true, skipConfirmation: true,
@ -221,45 +241,54 @@ context(
cy.get('button').contains('Select a validator to nominate').click(); cy.get('button').contains('Select a validator to nominate').click();
cy.getByTestId('epoch-countdown').should('be.visible'); cy.getByTestId('epoch-countdown').should('be.visible');
stakingPageAssociateTokens('37', { type: 'contract' }); stakingPageAssociateTokens('37', { type: 'contract' });
cy.get(vestingContractSection) cy.getByTestId(vestingContractSection)
.first() .first()
.within(() => { .within(() => {
cy.get(associatedKey).should( cy.getByTestId(associatedKey).should(
'contain', 'contain',
Cypress.env('vegaWalletPublicKeyShort') Cypress.env('vegaWalletPublicKeyShort')
); );
cy.get(associatedAmount, txTimeout).should('contain', 37); cy.getByTestId(associatedAmount, txTimeout).should('contain', 37);
}); });
cy.get(vegaInWalletSection) cy.getByTestId(vegaInWalletSection)
.first() .first()
.within(() => { .within(() => {
cy.get(associatedKey).should( cy.getByTestId(associatedKey).should(
'contain', 'contain',
Cypress.env('vegaWalletPublicKeyShort') Cypress.env('vegaWalletPublicKeyShort')
); );
cy.get(associatedAmount, txTimeout).should('contain', 21); cy.getByTestId(associatedAmount, txTimeout).should('contain', 21);
}); });
cy.get(vegaWallet).within(() => { cy.get(vegaWallet).within(() => {
cy.get(vegaWalletAssociatedBalance, txTimeout).should('contain', 58); cy.getByTestId(vegaWalletAssociatedBalance, txTimeout).should(
'contain',
58
);
}); });
stakingPageDisassociateTokens('6', { type: 'contract' }); stakingPageDisassociateTokens('6', { type: 'contract' });
cy.get(vestingContractSection) cy.getByTestId(vestingContractSection)
.first() .first()
.within(() => { .within(() => {
cy.get(associatedAmount, txTimeout).should('contain', 31); cy.getByTestId(associatedAmount, txTimeout).should('contain', 31);
}); });
cy.get(vegaWallet).within(() => { cy.get(vegaWallet).within(() => {
cy.get(vegaWalletAssociatedBalance, txTimeout).should('contain', 52); cy.getByTestId(vegaWalletAssociatedBalance, txTimeout).should(
'contain',
52
);
}); });
navigateTo(navigation.validators); navigateTo(navigation.validators);
stakingPageDisassociateTokens('9', { type: 'wallet' }); stakingPageDisassociateTokens('9', { type: 'wallet' });
cy.get(vegaInWalletSection) cy.getByTestId(vegaInWalletSection)
.first() .first()
.within(() => { .within(() => {
cy.get(associatedAmount, txTimeout).should('contain', 12); cy.getByTestId(associatedAmount, txTimeout).should('contain', 12);
}); });
cy.get(vegaWallet).within(() => { cy.get(vegaWallet).within(() => {
cy.get(vegaWalletAssociatedBalance, txTimeout).should('contain', 43); cy.getByTestId(vegaWalletAssociatedBalance, txTimeout).should(
'contain',
43
);
}); });
}); });
@ -268,10 +297,10 @@ context(
// 1004-ASSO-010 // 1004-ASSO-010
// No warning visible as described in AC, but the button is disabled // No warning visible as described in AC, but the button is disabled
cy.get(ethWalletAssociateButton).click(); cy.get(ethWalletAssociateButton).click();
cy.get(associateWalletRadioButton, { timeout: 30000 }).click(); cy.getByTestId(associateWalletRadioButton, { timeout: 30000 }).click();
cy.get(tokenSubmitButton, txTimeout).should('be.disabled'); // button disabled with no input cy.getByTestId(tokenSubmitButton, txTimeout).should('be.disabled'); // button disabled with no input
cy.get(tokenAmountInputBox, { timeout: 10000 }).type('6500000'); cy.getByTestId(tokenAmountInputBox, { timeout: 10000 }).type('6500000');
cy.get(tokenSubmitButton, txTimeout).should('be.disabled'); cy.getByTestId(tokenSubmitButton, txTimeout).should('be.disabled');
}); });
// 1004-ASSO-004 // 1004-ASSO-004
@ -296,22 +325,25 @@ context(
it('Able to associate tokens to different public key of connected vega wallet', function () { it('Able to associate tokens to different public key of connected vega wallet', function () {
cy.get(ethWalletAssociateButton).click(); cy.get(ethWalletAssociateButton).click();
cy.get(associateWalletRadioButton).click(); cy.getByTestId(associateWalletRadioButton).click();
cy.get(connectedVegaKey).should( cy.getByTestId(connectedVegaKey).should(
'have.text', 'have.text',
Cypress.env('vegaWalletPublicKey') Cypress.env('vegaWalletPublicKey')
); );
switchVegaWalletPubKey(); switchVegaWalletPubKey();
cy.get(connectedVegaKey).should( cy.getByTestId(connectedVegaKey).should(
'have.text', 'have.text',
Cypress.env('vegaWalletPublicKey2') Cypress.env('vegaWalletPublicKey2')
); );
stakingPageAssociateTokens('2'); stakingPageAssociateTokens('2');
cy.get(vegaWallet).within(() => { cy.get(vegaWallet).within(() => {
cy.get(vegaWalletAssociatedBalance, txTimeout).should('contain', 2.0); cy.getByTestId(vegaWalletAssociatedBalance, txTimeout).should(
'contain',
2.0
);
}); });
cy.get(associateCompleteText).should( cy.getByTestId(associateCompleteText).should(
'have.text', 'have.text',
`Vega key ${Cypress.env( `Vega key ${Cypress.env(
'vegaWalletPublicKey2Short' 'vegaWalletPublicKey2Short'

View File

@ -10,9 +10,10 @@ import {
} from '../../support/governance.functions'; } from '../../support/governance.functions';
import { mockNetworkUpgradeProposal } from '../../support/proposal.functions'; import { mockNetworkUpgradeProposal } from '../../support/proposal.functions';
const proposalDocumentationLink = '[data-testid="proposal-documentation-link"]'; const proposalDocsLink = 'proposal-docs-link';
const proposalDocumentationLink = 'proposal-documentation-link';
const connectToVegaWalletButton = 'connect-to-vega-wallet-btn';
const governanceDocsUrl = 'https://vega.xyz/governance'; const governanceDocsUrl = 'https://vega.xyz/governance';
const connectToVegaWalletButton = '[data-testid="connect-to-vega-wallet-btn"]';
context( context(
'Governance Page - verify elements on page', 'Governance Page - verify elements on page',
@ -41,7 +42,7 @@ context(
it('should be able to see a working link for - find out more about Vega governance', function () { it('should be able to see a working link for - find out more about Vega governance', function () {
// 3001-VOTE-001 // 3001-VOTE-001
cy.get(proposalDocumentationLink) cy.getByTestId(proposalDocumentationLink)
.should('be.visible') .should('be.visible')
.and('have.text', 'Find out more about Vega governance') .and('have.text', 'Find out more about Vega governance')
.and('have.attr', 'href') .and('have.attr', 'href')
@ -64,7 +65,7 @@ context(
// 3007-PNE-021 // 3007-PNE-021
it('should have documentation links for network parameter proposal', function () { it('should have documentation links for network parameter proposal', function () {
goToMakeNewProposal(governanceProposalType.NETWORK_PARAMETER); goToMakeNewProposal(governanceProposalType.NETWORK_PARAMETER);
cy.getByTestId('proposal-docs-link') cy.getByTestId(proposalDocsLink)
.find('a') .find('a')
.should('have.attr', 'href') .should('have.attr', 'href')
.and('contain', '/tutorials/proposals/network-parameter-proposal'); .and('contain', '/tutorials/proposals/network-parameter-proposal');
@ -73,7 +74,7 @@ context(
// 3003-PMAN-002 3003-PMAN-005 // 3003-PMAN-002 3003-PMAN-005
it('should have documentation links for new market proposal', function () { it('should have documentation links for new market proposal', function () {
goToMakeNewProposal(governanceProposalType.NEW_MARKET); goToMakeNewProposal(governanceProposalType.NEW_MARKET);
cy.getByTestId('proposal-docs-link') cy.getByTestId(proposalDocsLink)
.find('a') .find('a')
.should('have.attr', 'href') .should('have.attr', 'href')
.and('contain', '/tutorials/proposals/new-market-proposal'); .and('contain', '/tutorials/proposals/new-market-proposal');
@ -82,7 +83,7 @@ context(
// 3004-PMAC-005 // 3004-PMAC-005
it('should have documentation links for update market proposal', function () { it('should have documentation links for update market proposal', function () {
goToMakeNewProposal(governanceProposalType.UPDATE_MARKET); goToMakeNewProposal(governanceProposalType.UPDATE_MARKET);
cy.getByTestId('proposal-docs-link') cy.getByTestId(proposalDocsLink)
.find('a') .find('a')
.should('have.attr', 'href') .should('have.attr', 'href')
.and('contain', '/tutorials/proposals/update-market-proposal'); .and('contain', '/tutorials/proposals/update-market-proposal');
@ -91,7 +92,7 @@ context(
// 3005-PASN-002 005-PASN-005 // 3005-PASN-002 005-PASN-005
it('should have documentation links for new asset proposal', function () { it('should have documentation links for new asset proposal', function () {
goToMakeNewProposal(governanceProposalType.NEW_ASSET); goToMakeNewProposal(governanceProposalType.NEW_ASSET);
cy.getByTestId('proposal-docs-link') cy.getByTestId(proposalDocsLink)
.find('a') .find('a')
.should('have.attr', 'href') .should('have.attr', 'href')
.and('contain', '/tutorials/proposals/new-asset-proposal'); .and('contain', '/tutorials/proposals/new-asset-proposal');
@ -100,7 +101,7 @@ context(
// 3006-PASC-002 3006-PASC-005 // 3006-PASC-002 3006-PASC-005
it('should have documentation links for update asset proposal', function () { it('should have documentation links for update asset proposal', function () {
goToMakeNewProposal(governanceProposalType.UPDATE_ASSET); goToMakeNewProposal(governanceProposalType.UPDATE_ASSET);
cy.getByTestId('proposal-docs-link') cy.getByTestId(proposalDocsLink)
.find('a') .find('a')
.should('have.attr', 'href') .should('have.attr', 'href')
.and('contain', '/tutorials/proposals/update-asset-proposal'); .and('contain', '/tutorials/proposals/update-asset-proposal');
@ -109,7 +110,7 @@ context(
// 3008-PFRO-003 3008-PFRO-017 // 3008-PFRO-003 3008-PFRO-017
it('should have documentation links for freeform proposal', function () { it('should have documentation links for freeform proposal', function () {
goToMakeNewProposal(governanceProposalType.FREEFORM); goToMakeNewProposal(governanceProposalType.FREEFORM);
cy.getByTestId('proposal-docs-link') cy.getByTestId(proposalDocsLink)
.find('a') .find('a')
.should('have.attr', 'href') .should('have.attr', 'href')
.and('contain', '/tutorials/proposals/freeform-proposal'); .and('contain', '/tutorials/proposals/freeform-proposal');
@ -117,7 +118,7 @@ context(
it('should be able to see a connect wallet button - if vega wallet disconnected and user is submitting new proposal', function () { it('should be able to see a connect wallet button - if vega wallet disconnected and user is submitting new proposal', function () {
goToMakeNewProposal(governanceProposalType.RAW); goToMakeNewProposal(governanceProposalType.RAW);
cy.get(connectToVegaWalletButton) cy.getByTestId(connectToVegaWalletButton)
.should('be.visible') .should('be.visible')
.and('have.text', 'Connect Vega wallet'); .and('have.text', 'Connect Vega wallet');
}); });

View File

@ -5,8 +5,8 @@ import {
} from '../../support/common.functions'; } from '../../support/common.functions';
import { waitForBeginningOfEpoch } from '../../support/staking.functions'; import { waitForBeginningOfEpoch } from '../../support/staking.functions';
const viewToggle = '[data-testid="epoch-reward-view-toggle-total"]'; const viewToggle = 'epoch-reward-view-toggle-total';
const warning = '[data-testid="callout"]'; const warning = 'callout';
context( context(
'Rewards Page - verify elements on page', 'Rewards Page - verify elements on page',
@ -27,7 +27,7 @@ context(
}); });
it('should have epoch warning', function () { it('should have epoch warning', function () {
cy.get(warning) cy.getByTestId(warning)
.should('be.visible') .should('be.visible')
.and( .and(
'have.text', 'have.text',
@ -36,7 +36,7 @@ context(
}); });
it('should have toggle for seeing total vs individual rewards', function () { it('should have toggle for seeing total vs individual rewards', function () {
cy.get(viewToggle).should('be.visible'); cy.getByTestId(viewToggle).should('be.visible');
}); });
// Skipping due to bug #3471 causing flaky failuress // Skipping due to bug #3471 causing flaky failuress

View File

@ -1,18 +1,17 @@
import { navigateTo, navigation } from '../../support/common.functions'; import { navigateTo, navigation } from '../../support/common.functions';
const tokenDetailsTable = '.token-details'; const tokenDetailsTable = '.token-details';
const address = '[data-testid="token-address"]'; const address = 'token-address';
const contract = '[data-testid="token-contract"]'; const contract = 'token-contract';
const totalSupply = '[data-testid="total-supply"]'; const totalSupply = 'total-supply';
const circulatingSupply = '[data-testid="circulating-supply"]'; const circulatingSupply = 'circulating-supply';
const staked = '[data-testid="staked"]'; const staked = 'staked';
const tranchesLink = '[data-testid="tranches-link"]'; const tranchesLink = 'tranches-link';
const redeemBtn = '[data-testid="check-vesting-page-btn"]'; const redeemBtn = 'check-vesting-page-btn';
const getVegaWalletLink = '[data-testid="get-vega-wallet-link"]'; const getVegaWalletLink = 'get-vega-wallet-link';
const associateVegaLink = const associateVegaLink = 'associate-vega-tokens-link-on-homepage';
'[data-testid="associate-vega-tokens-link-on-homepage"]'; const stakingBtn = 'staking-button-on-homepage';
const stakingBtn = '[data-testid="staking-button-on-homepage"]'; const governanceBtn = 'governance-button-on-homepage';
const governanceBtn = '[data-testid="governance-button-on-homepage"]';
const vegaTokenAddress = Cypress.env('vegaTokenAddress'); const vegaTokenAddress = Cypress.env('vegaTokenAddress');
const vegaTokenContractAddress = Cypress.env('vegaTokenContractAddress'); const vegaTokenContractAddress = Cypress.env('vegaTokenContractAddress');
@ -25,7 +24,7 @@ context('Verify elements on Token page', { tags: '@smoke' }, function () {
describe('THE $VEGA TOKEN table', function () { describe('THE $VEGA TOKEN table', function () {
it('should have TOKEN ADDRESS', function () { it('should have TOKEN ADDRESS', function () {
cy.get(tokenDetailsTable).within(() => { cy.get(tokenDetailsTable).within(() => {
cy.get(address) cy.getByTestId(address)
.should('be.visible') .should('be.visible')
.invoke('text') .invoke('text')
.should('be.equal', vegaTokenAddress); .should('be.equal', vegaTokenAddress);
@ -34,7 +33,7 @@ context('Verify elements on Token page', { tags: '@smoke' }, function () {
it('should have VESTING CONTRACT', function () { it('should have VESTING CONTRACT', function () {
// 1004-ASSO-001 // 1004-ASSO-001
cy.get(tokenDetailsTable).within(() => { cy.get(tokenDetailsTable).within(() => {
cy.get(contract) cy.getByTestId(contract)
.should('be.visible') .should('be.visible')
.invoke('text') .invoke('text')
.should('be.equal', vegaTokenContractAddress); .should('be.equal', vegaTokenContractAddress);
@ -42,56 +41,56 @@ context('Verify elements on Token page', { tags: '@smoke' }, function () {
}); });
it('should have TOTAL SUPPLY', function () { it('should have TOTAL SUPPLY', function () {
cy.get(tokenDetailsTable).within(() => { cy.get(tokenDetailsTable).within(() => {
cy.get(totalSupply).should('be.visible'); cy.getByTestId(totalSupply).should('be.visible');
}); });
}); });
it('should have CIRCULATING SUPPLY', function () { it('should have CIRCULATING SUPPLY', function () {
cy.get(tokenDetailsTable).within(() => { cy.get(tokenDetailsTable).within(() => {
cy.get(circulatingSupply).should('be.visible'); cy.getByTestId(circulatingSupply).should('be.visible');
}); });
}); });
it('should have STAKED $VEGA', function () { it('should have STAKED $VEGA', function () {
cy.get(tokenDetailsTable).within(() => { cy.get(tokenDetailsTable).within(() => {
cy.get(staked).should('be.visible'); cy.getByTestId(staked).should('be.visible');
}); });
}); });
}); });
describe('links and buttons', function () { describe('links and buttons', function () {
it('should have TRANCHES link', function () { it('should have TRANCHES link', function () {
cy.get(tranchesLink) cy.getByTestId(tranchesLink)
.should('be.visible') .should('be.visible')
.and('have.attr', 'href') .and('have.attr', 'href')
.and('equal', '/token/tranches'); .and('equal', '/token/tranches');
}); });
it('should have REDEEM button', function () { it('should have REDEEM button', function () {
cy.get(redeemBtn) cy.getByTestId(redeemBtn)
.should('be.visible') .should('be.visible')
.parent() .parent()
.should('have.attr', 'href') .should('have.attr', 'href')
.and('equal', '/token/redeem'); .and('equal', '/token/redeem');
}); });
it('should have GET VEGA WALLET link', function () { it('should have GET VEGA WALLET link', function () {
cy.get(getVegaWalletLink) cy.getByTestId(getVegaWalletLink)
.should('be.visible') .should('be.visible')
.and('have.attr', 'href') .and('have.attr', 'href')
.and('equal', 'https://vega.xyz/wallet'); .and('equal', 'https://vega.xyz/wallet');
}); });
it('should have ASSOCIATE VEGA TOKENS link', function () { it('should have ASSOCIATE VEGA TOKENS link', function () {
cy.get(associateVegaLink) cy.getByTestId(associateVegaLink)
.should('be.visible') .should('be.visible')
.and('have.attr', 'href') .and('have.attr', 'href')
.and('equal', '/token/associate'); .and('equal', '/token/associate');
}); });
it('should have STAKING button', function () { it('should have STAKING button', function () {
cy.get(stakingBtn) cy.getByTestId(stakingBtn)
.should('be.visible') .should('be.visible')
.parent() .parent()
.should('have.attr', 'href') .should('have.attr', 'href')
.and('equal', '/validators'); .and('equal', '/validators');
}); });
it('should have GOVERNANCE button', function () { it('should have GOVERNANCE button', function () {
cy.get(governanceBtn) cy.getByTestId(governanceBtn)
.should('be.visible') .should('be.visible')
.parent() .parent()
.should('have.attr', 'href') .should('have.attr', 'href')

View File

@ -12,28 +12,26 @@ import {
} from '../../support/staking.functions'; } from '../../support/staking.functions';
import { previousEpochData } from '../../fixtures/mocks/previous-epoch'; import { previousEpochData } from '../../fixtures/mocks/previous-epoch';
const guideLink = '[data-testid="staking-guide-link"]'; const guideLink = 'staking-guide-link';
const validatorTitle = '[data-testid="validator-node-title"]'; const validatorTitle = 'validator-node-title';
const validatorId = '[data-testid="validator-id"]'; const validatorId = 'validator-id';
const validatorPubKey = '[data-testid="validator-public-key"]'; const validatorPubKey = 'validator-public-key';
const ethAddressLink = '[data-testid="link"]'; const ethAddressLink = 'link';
const validatorStatus = '[data-testid="validator-status"]'; const validatorStatus = 'validator-status';
const totalStake = '[data-testid="total-stake"]'; const totalStake = 'total-stake';
const pendingStake = '[data-testid="pending-stake"]'; const pendingStake = 'pending-stake';
const stakedByOperator = '[data-testid="staked-by-operator"]'; const stakedByOperator = 'staked-by-operator';
const stakedByDelegates = '[data-testid="staked-by-delegates"]'; const stakedByDelegates = 'staked-by-delegates';
const stakeShare = '[data-testid="stake-percentage"]'; const stakeShare = 'stake-percentage';
const stakedByOperatorToolTip = '[data-testid="staked-operator-tooltip"]'; const stakedByOperatorToolTip = 'staked-operator-tooltip';
const stakedByDelegatesToolTip = '[data-testid="staked-delegates-tooltip"]'; const stakedByDelegatesToolTip = 'staked-delegates-tooltip';
const totalStakedToolTip = '[data-testid="total-staked-tooltip"]'; const totalStakedToolTip = 'total-staked-tooltip';
const unnormalisedVotingPowerToolTip = const unnormalisedVotingPowerToolTip = 'unnormalised-voting-power-tooltip';
'[data-testid="unnormalised-voting-power-tooltip"]'; const normalisedVotingPowerToolTip = 'normalised-voting-power-tooltip';
const normalisedVotingPowerToolTip = const performancePenaltyToolTip = 'performance-penalty-tooltip';
'[data-testid="normalised-voting-power-tooltip"]'; const overstakedPenaltyToolTip = 'overstaked-penalty-tooltip';
const performancePenaltyToolTip = '[data-testid="performance-penalty-tooltip"]'; const multisigPenaltyToolTip = 'multisig-error-tooltip';
const overstakedPenaltyToolTip = '[data-testid="overstaked-penalty-tooltip"]'; const epochCountDown = 'epoch-countdown';
const multisigPenaltyToolTip = '[data-testid="multisig-error-tooltip"]';
const epochCountDown = '[data-testid="epoch-countdown"]';
const stakeNumberRegex = /^\d{1,3}(,\d{3})*(\.\d+)?$/; const stakeNumberRegex = /^\d{1,3}(,\d{3})*(\.\d+)?$/;
context('Validators Page - verify elements on page', function () { context('Validators Page - verify elements on page', function () {
@ -52,7 +50,7 @@ context('Validators Page - verify elements on page', function () {
it('Should have Staking Guide link visible', function () { it('Should have Staking Guide link visible', function () {
// 1002-STKE-003 // 1002-STKE-003
cy.get(guideLink) cy.getByTestId(guideLink)
.should('be.visible') .should('be.visible')
.and('have.text', 'Read more about staking on Vega') .and('have.text', 'Read more about staking on Vega')
.and( .and(
@ -95,13 +93,13 @@ context('Validators Page - verify elements on page', function () {
waitForBeginningOfEpoch(); waitForBeginningOfEpoch();
cy.getByTestId('total-stake').first().realHover(); cy.getByTestId('total-stake').first().realHover();
cy.get(stakedByOperatorToolTip) cy.getByTestId(stakedByOperatorToolTip)
.invoke('text') .invoke('text')
.should('contain', 'Staked by operator: 3,000.00'); .should('contain', 'Staked by operator: 3,000.00');
cy.get(stakedByDelegatesToolTip) cy.getByTestId(stakedByDelegatesToolTip)
.invoke('text') .invoke('text')
.should('contain', 'Staked by delegates: 0.00'); .should('contain', 'Staked by delegates: 0.00');
cy.get(totalStakedToolTip) cy.getByTestId(totalStakedToolTip)
.invoke('text') .invoke('text')
.should('contain', 'Total stake: 3,000.00'); .should('contain', 'Total stake: 3,000.00');
}); });
@ -118,10 +116,10 @@ context('Validators Page - verify elements on page', function () {
waitForBeginningOfEpoch(); waitForBeginningOfEpoch();
cy.getByTestId('normalised-voting-power').first().realHover(); cy.getByTestId('normalised-voting-power').first().realHover();
cy.get(unnormalisedVotingPowerToolTip) cy.getByTestId(unnormalisedVotingPowerToolTip)
.invoke('text') .invoke('text')
.should('contain', 'Unnormalised voting power: 20.00%'); .should('contain', 'Unnormalised voting power: 20.00%');
cy.get(normalisedVotingPowerToolTip) cy.getByTestId(normalisedVotingPowerToolTip)
.invoke('text') .invoke('text')
.should('contain', 'Normalised voting power: 50.00%'); .should('contain', 'Normalised voting power: 50.00%');
}); });
@ -139,10 +137,10 @@ context('Validators Page - verify elements on page', function () {
waitForBeginningOfEpoch(); waitForBeginningOfEpoch();
cy.getByTestId('total-penalty').realHover(); cy.getByTestId('total-penalty').realHover();
cy.get(performancePenaltyToolTip) cy.getByTestId(performancePenaltyToolTip)
.invoke('text') .invoke('text')
.should('contain', 'Performance penalty: 0.00%'); .should('contain', 'Performance penalty: 0.00%');
cy.get(overstakedPenaltyToolTip) cy.getByTestId(overstakedPenaltyToolTip)
.invoke('text') .invoke('text')
.should('contain', 'Overstaked penalty: 60.00%'); // value not asserted due to #2886 .should('contain', 'Overstaked penalty: 60.00%'); // value not asserted due to #2886
}); });
@ -161,12 +159,12 @@ context('Validators Page - verify elements on page', function () {
}); });
waitForBeginningOfEpoch(); waitForBeginningOfEpoch();
cy.getByTestId('total-penalty').first().realHover(); cy.getByTestId('total-penalty').first().realHover();
cy.get(multisigPenaltyToolTip) cy.getByTestId(multisigPenaltyToolTip)
.invoke('text') .invoke('text')
.should('contain', 'Multisig penalty: 100%'); .should('contain', 'Multisig penalty: 100%');
cy.getByTestId('total-penalty').eq(1).realHover(); cy.getByTestId('total-penalty').eq(1).realHover();
cy.get(multisigPenaltyToolTip) cy.getByTestId(multisigPenaltyToolTip)
.invoke('text') .invoke('text')
.should('contain', 'Multisig penalty: 100%'); .should('contain', 'Multisig penalty: 100%');
}); });
@ -185,53 +183,59 @@ context('Validators Page - verify elements on page', function () {
// 1002-STKE-006 // 1002-STKE-006
it('Should be able to see validator name', function () { it('Should be able to see validator name', function () {
cy.get(validatorTitle).should('not.be.empty'); cy.getByTestId(validatorTitle).should('not.be.empty');
}); });
// 1002-STKE-007 // 1002-STKE-007
it('Should be able to see validator id', function () { it('Should be able to see validator id', function () {
cy.get(validatorId).should('not.be.empty'); cy.getByTestId(validatorId).should('not.be.empty');
}); });
// 1002-STKE-008 // 1002-STKE-008
it('Should be able to see validator public key', function () { it('Should be able to see validator public key', function () {
cy.get(validatorPubKey).should('not.be.empty'); cy.getByTestId(validatorPubKey).should('not.be.empty');
}); });
// 1002-STKE-010 // 1002-STKE-010
it('Should be able to see Ethereum address', function () { it('Should be able to see Ethereum address', function () {
cy.get(ethAddressLink).should('not.be.empty').and('have.attr', 'href'); cy.getByTestId(ethAddressLink)
.should('not.be.empty')
.and('have.attr', 'href');
}); });
// TODO validators missing url for more information about them 1002-STKE-09 // TODO validators missing url for more information about them 1002-STKE-09
it('Should be able to see validator status', function () { it('Should be able to see validator status', function () {
cy.get(validatorStatus).should('have.text', 'Consensus'); cy.getByTestId(validatorStatus).should('have.text', 'Consensus');
}); });
// 1002-STKE-012 // 1002-STKE-012
it('Should be able to see total stake', function () { it('Should be able to see total stake', function () {
cy.get(totalStake).invoke('text').should('match', stakeNumberRegex); cy.getByTestId(totalStake)
.invoke('text')
.should('match', stakeNumberRegex);
}); });
it('Should be able to see pending stake', function () { it('Should be able to see pending stake', function () {
cy.get(pendingStake).invoke('text').should('match', stakeNumberRegex); cy.getByTestId(pendingStake)
.invoke('text')
.should('match', stakeNumberRegex);
}); });
it('Should be able to see staked by operator', function () { it('Should be able to see staked by operator', function () {
cy.get(stakedByOperator) cy.getByTestId(stakedByOperator)
.invoke('text') .invoke('text')
.should('match', stakeNumberRegex); .should('match', stakeNumberRegex);
}); });
it('Should be able to see staked by delegates', function () { it('Should be able to see staked by delegates', function () {
cy.get(stakedByDelegates) cy.getByTestId(stakedByDelegates)
.invoke('text') .invoke('text')
.should('match', stakeNumberRegex); .should('match', stakeNumberRegex);
}); });
// 1002-STKE-051 // 1002-STKE-051
it('Should be able to see stake share in percentage', function () { it('Should be able to see stake share in percentage', function () {
cy.get(stakeShare) cy.getByTestId(stakeShare)
.invoke('text') .invoke('text')
.then(($stakePercentage) => { .then(($stakePercentage) => {
// The pattern must start at a word boundary (\b). // The pattern must start at a word boundary (\b).
@ -257,7 +261,7 @@ context('Validators Page - verify elements on page', function () {
const epochTitle = 'h3'; const epochTitle = 'h3';
const nextEpochInfo = 'p'; const nextEpochInfo = 'p';
cy.get(epochCountDown).within(() => { cy.getByTestId(epochCountDown).within(() => {
cy.get(epochTitle).should('not.be.empty'); cy.get(epochTitle).should('not.be.empty');
cy.get(nextEpochInfo).should('contain.text', 'Next epoch'); cy.get(nextEpochInfo).should('contain.text', 'Next epoch');
}); });

View File

@ -6,7 +6,7 @@ import {
} from '../../support/common.functions'; } from '../../support/common.functions';
import { ethereumWalletConnect } from '../../support/wallet-eth.functions'; import { ethereumWalletConnect } from '../../support/wallet-eth.functions';
const connectButton = '[data-testid="connect-to-eth-btn"]'; const connectButton = 'connect-to-eth-btn';
const lockedTokensInVestingContract = '6,499,972.30'; const lockedTokensInVestingContract = '6,499,972.30';
context( context(
@ -29,7 +29,7 @@ context(
// 1005-VEST-018 // 1005-VEST-018
it('should have connect Eth wallet button', function () { it('should have connect Eth wallet button', function () {
cy.get(connectButton) cy.getByTestId(connectButton)
.should('be.visible') .should('be.visible')
.and('have.text', 'Connect Ethereum wallet'); .and('have.text', 'Connect Ethereum wallet');
}); });

View File

@ -5,11 +5,11 @@ const walletContainer = 'aside [data-testid="ethereum-wallet"]';
const walletHeader = '[data-testid="wallet-header"] h1'; const walletHeader = '[data-testid="wallet-header"] h1';
const connectToEthButton = const connectToEthButton =
'[data-testid="connect-to-eth-wallet-button"]:visible'; '[data-testid="connect-to-eth-wallet-button"]:visible';
const connectorList = '[data-testid="web3-connector-list"]'; const connectorList = 'web3-connector-list';
const associate = '[href="/token/associate"]'; const associate = '[href="/token/associate"]';
const disassociate = '[href="/token/disassociate"]'; const disassociate = '[href="/token/disassociate"]';
const disconnect = '[data-testid="disconnect-from-eth-wallet-button"]'; const disconnect = 'disconnect-from-eth-wallet-button';
const accountNo = '[data-testid="ethereum-account-truncated"]'; const accountNo = 'ethereum-account-truncated';
const currencyTitle = '[data-testid="currency-title"]:visible'; const currencyTitle = '[data-testid="currency-title"]:visible';
const currencyValue = '[data-testid="currency-value"]:visible'; const currencyValue = '[data-testid="currency-value"]:visible';
const vegaInVesting = '[data-testid="vega-in-vesting-contract"]:visible'; const vegaInVesting = '[data-testid="vega-in-vesting-contract"]:visible';
@ -18,8 +18,8 @@ const progressBar = '[data-testid="progress-bar"]:visible';
const currencyLocked = '[data-testid="currency-locked"]:visible'; const currencyLocked = '[data-testid="currency-locked"]:visible';
const currencyUnlocked = '[data-testid="currency-unlocked"]:visible'; const currencyUnlocked = '[data-testid="currency-unlocked"]:visible';
const dialog = '[role="dialog"]:visible'; const dialog = '[role="dialog"]:visible';
const dialogHeader = '[data-testid="dialog-title"]'; const dialogHeader = 'dialog-title';
const dialogCloseBtn = '[data-testid="dialog-close"]'; const dialogCloseBtn = 'dialog-close';
context( context(
'Ethereum Wallet - verify elements on widget', 'Ethereum Wallet - verify elements on widget',
@ -59,7 +59,7 @@ context(
it('should have Connect Ethereum header visible', function () { it('should have Connect Ethereum header visible', function () {
cy.get(dialog).within(() => { cy.get(dialog).within(() => {
cy.get(dialogHeader) cy.getByTestId(dialogHeader)
.should('be.visible') .should('be.visible')
.and('have.text', 'Connect to your Ethereum wallet'); .and('have.text', 'Connect to your Ethereum wallet');
}); });
@ -73,7 +73,7 @@ context(
'WalletConnect', 'WalletConnect',
'WalletConnect Legacy', 'WalletConnect Legacy',
]; ];
cy.get(connectorList).within(() => { cy.getByTestId(connectorList).within(() => {
cy.get('button').each(($btn, i) => { cy.get('button').each(($btn, i) => {
cy.wrap($btn).should('be.visible').and('have.text', connectList[i]); cy.wrap($btn).should('be.visible').and('have.text', connectList[i]);
}); });
@ -83,7 +83,7 @@ context(
after('close popup', function () { after('close popup', function () {
cy.get(dialog) cy.get(dialog)
.within(() => { .within(() => {
cy.get(dialogCloseBtn).click(); cy.getByTestId(dialogCloseBtn).click();
}) })
.should('not.exist'); .should('not.exist');
}); });
@ -106,7 +106,7 @@ context(
// 0004-EWAL-005 // 0004-EWAL-005
it('should have account number visible', function () { it('should have account number visible', function () {
cy.get(walletContainer).within(() => { cy.get(walletContainer).within(() => {
cy.get(accountNo) cy.getByTestId(accountNo)
.should('be.visible') .should('be.visible')
.and('have.text', Cypress.env('ethWalletPublicKeyTruncated')); .and('have.text', Cypress.env('ethWalletPublicKeyTruncated'));
}); });
@ -129,7 +129,7 @@ context(
// 0004-EWAL-007 // 0004-EWAL-007
it('should have Disconnect button visible', function () { it('should have Disconnect button visible', function () {
cy.get(walletContainer).within(() => { cy.get(walletContainer).within(() => {
cy.get(disconnect) cy.getByTestId(disconnect)
.should('be.visible') .should('be.visible')
.and('have.text', 'Disconnect'); .and('have.text', 'Disconnect');
}); });

View File

@ -7,28 +7,28 @@ import {
const walletContainer = 'aside [data-testid="vega-wallet"]'; const walletContainer = 'aside [data-testid="vega-wallet"]';
const walletHeader = '[data-testid="wallet-header"] h1'; const walletHeader = '[data-testid="wallet-header"] h1';
const connectButton = '[data-testid="connect-vega-wallet"]'; const connectButton = 'connect-vega-wallet';
const getVegaLink = '[data-testid="link"]'; const getVegaLink = 'link';
const dialog = '[role="dialog"]:visible'; const dialog = '[role="dialog"]:visible';
const dialogHeader = '[data-testid="dialog-title"]'; const dialogHeader = 'dialog-title';
const walletDialogHeader = '[data-testid="wallet-dialog-title"]'; const walletDialogHeader = 'wallet-dialog-title';
const connectorsList = '[data-testid="connectors-list"]'; const connectorsList = 'connectors-list';
const dialogCloseBtn = '[data-testid="dialog-close"]'; const dialogCloseBtn = 'dialog-close';
const restConnectorForm = '[data-testid="rest-connector-form"]'; const restConnectorForm = 'rest-connector-form';
const restWallet = '#wallet'; const restWallet = '#wallet';
const restPassphrase = '#passphrase'; const restPassphrase = '#passphrase';
const restConnectBtn = '[type="submit"]'; const restConnectBtn = '[type="submit"]';
const accountNo = '[data-testid="vega-account-truncated"]'; const accountNo = 'vega-account-truncated';
const currencyTitle = '[data-testid="currency-title"]'; const currencyTitle = 'currency-title';
const currencyValue = '[data-testid="currency-value"]'; const currencyValue = 'currency-value';
const vegaUnstaked = '[data-testid="vega-wallet-balance-unstaked"] .text-right'; const vegaUnstaked = '[data-testid="vega-wallet-balance-unstaked"] .text-right';
const governanceBtn = '[href="/proposals"]'; const governanceBtn = '[href="/proposals"]';
const stakingBtn = '[href="/validators"]'; const stakingBtn = '[href="/validators"]';
const manageLink = '[data-testid="manage-vega-wallet"]'; const manageLink = 'manage-vega-wallet';
const dialogVegaKey = '[data-testid="vega-public-key-full"]'; const dialogVegaKey = 'vega-public-key-full';
const dialogDisconnectBtn = '[data-testid="disconnect"]'; const dialogDisconnectBtn = 'disconnect';
const copyPublicKeyBtn = '[data-testid="copy-vega-public-key"]'; const copyPublicKeyBtn = 'copy-vega-public-key';
const vegaWalletCurrencyTitle = '[data-testid="currency-title"]'; const vegaWalletCurrencyTitle = 'currency-title';
const vegaWalletPublicKey = Cypress.env('vegaWalletPublicKey'); const vegaWalletPublicKey = Cypress.env('vegaWalletPublicKey');
const txTimeout = Cypress.env('txTimeout'); const txTimeout = Cypress.env('txTimeout');
@ -47,10 +47,10 @@ context(
cy.get(walletHeader) cy.get(walletHeader)
.should('be.visible') .should('be.visible')
.and('have.text', 'Vega Wallet'); .and('have.text', 'Vega Wallet');
cy.get(connectButton) cy.getByTestId(connectButton)
.should('be.visible') .should('be.visible')
.and('have.text', 'Connect Vega wallet to use associated $VEGA'); .and('have.text', 'Connect Vega wallet to use associated $VEGA');
cy.get(getVegaLink) cy.getByTestId(getVegaLink)
.should('be.visible') .should('be.visible')
.and('have.text', 'Get a Vega wallet') .and('have.text', 'Get a Vega wallet')
.and('have.attr', 'href', 'https://vega.xyz/wallet'); .and('have.attr', 'href', 'https://vega.xyz/wallet');
@ -61,20 +61,20 @@ context(
describe('when connect button clicked', () => { describe('when connect button clicked', () => {
before('click connect vega wallet button', () => { before('click connect vega wallet button', () => {
cy.get(walletContainer).within(() => { cy.get(walletContainer).within(() => {
cy.get(connectButton).click(); cy.getByTestId(connectButton).click();
}); });
}); });
it('should have Connect Vega header visible', () => { it('should have Connect Vega header visible', () => {
cy.get(dialog).within(() => { cy.get(dialog).within(() => {
cy.get(walletDialogHeader) cy.getByTestId(walletDialogHeader)
.should('be.visible') .should('be.visible')
.and('have.text', 'Connect'); .and('have.text', 'Connect');
}); });
}); });
it('should have jsonRpc and hosted connection options visible on list', function () { it('should have jsonRpc and hosted connection options visible on list', function () {
cy.get(connectorsList).within(() => { cy.getByTestId(connectorsList).within(() => {
cy.getByTestId('connector-jsonRpc') cy.getByTestId('connector-jsonRpc')
.should('be.visible') .should('be.visible')
.and('have.text', 'Connect Vega wallet'); .and('have.text', 'Connect Vega wallet');
@ -86,33 +86,33 @@ context(
it('should have close button visible', function () { it('should have close button visible', function () {
cy.get(dialog).within(() => { cy.get(dialog).within(() => {
cy.get(dialogCloseBtn).should('be.visible'); cy.getByTestId(dialogCloseBtn).should('be.visible');
}); });
}); });
}); });
describe('when rest connector form opened', function () { describe('when rest connector form opened', function () {
before('click hosted wallet app button', function () { before('click hosted wallet app button', function () {
cy.get(connectorsList).within(() => { cy.getByTestId(connectorsList).within(() => {
cy.getByTestId('connector-hosted').click(); cy.getByTestId('connector-hosted').click();
}); });
}); });
// 0002-WCON-002 // 0002-WCON-002
it('should have wallet field visible', function () { it('should have wallet field visible', function () {
cy.get(restConnectorForm).within(() => { cy.getByTestId(restConnectorForm).within(() => {
cy.get(restWallet).should('be.visible'); cy.get(restWallet).should('be.visible');
}); });
}); });
it('should have password field visible', function () { it('should have password field visible', function () {
cy.get(restConnectorForm).within(() => { cy.getByTestId(restConnectorForm).within(() => {
cy.get(restPassphrase).should('be.visible'); cy.get(restPassphrase).should('be.visible');
}); });
}); });
it('should have connect button visible', function () { it('should have connect button visible', function () {
cy.get(restConnectorForm).within(() => { cy.getByTestId(restConnectorForm).within(() => {
cy.get(restConnectBtn) cy.get(restConnectBtn)
.should('be.visible') .should('be.visible')
.and('have.text', 'Connect'); .and('have.text', 'Connect');
@ -121,12 +121,12 @@ context(
it('should have close button visible', function () { it('should have close button visible', function () {
cy.get(dialog).within(() => { cy.get(dialog).within(() => {
cy.get(dialogCloseBtn).should('be.visible'); cy.getByTestId(dialogCloseBtn).should('be.visible');
}); });
}); });
after('close dialog', function () { after('close dialog', function () {
cy.get(dialogCloseBtn).click().should('not.exist'); cy.getByTestId(dialogCloseBtn).click().should('not.exist');
}); });
}); });
@ -152,7 +152,7 @@ context(
{ tags: '@smoke' }, { tags: '@smoke' },
function () { function () {
cy.get(walletContainer).within(() => { cy.get(walletContainer).within(() => {
cy.get(accountNo) cy.getByTestId(accountNo)
.should('be.visible') .should('be.visible')
.and('have.text', Cypress.env('vegaWalletPublicKeyShort')); .and('have.text', Cypress.env('vegaWalletPublicKeyShort'));
}); });
@ -161,7 +161,7 @@ context(
it('should have Vega Associated currency title visible', function () { it('should have Vega Associated currency title visible', function () {
cy.get(walletContainer).within(() => { cy.get(walletContainer).within(() => {
cy.get(currencyTitle) cy.getByTestId(currencyTitle)
.should('be.visible') .should('be.visible')
.and('contain.text', `VEGAAssociated`); .and('contain.text', `VEGAAssociated`);
}); });
@ -172,7 +172,7 @@ context(
{ tags: '@smoke' }, { tags: '@smoke' },
function () { function () {
cy.get(walletContainer).within(() => { cy.get(walletContainer).within(() => {
cy.get(currencyValue) cy.getByTestId(currencyValue)
.should('be.visible') .should('be.visible')
.and('contain.text', `0.00`); .and('contain.text', `0.00`);
}); });
@ -204,21 +204,23 @@ context(
it('should have Manage link visible', function () { it('should have Manage link visible', function () {
cy.get(walletContainer).within(() => { cy.get(walletContainer).within(() => {
cy.get(manageLink).should('be.visible').and('have.text', 'Manage'); cy.getByTestId(manageLink)
.should('be.visible')
.and('have.text', 'Manage');
}); });
}); });
describe('when Manage dialog opened', function () { describe('when Manage dialog opened', function () {
before('click Manage link', function () { before('click Manage link', function () {
cy.get(walletContainer).within(() => { cy.get(walletContainer).within(() => {
cy.get(manageLink).click(); cy.getByTestId(manageLink).click();
}); });
}); });
// 0002-WCON-025, 0002-WCON-026 // 0002-WCON-025, 0002-WCON-026
it('should have SELECT A VEGA KEY dialog title visible', function () { it('should have SELECT A VEGA KEY dialog title visible', function () {
cy.get(dialog).within(() => { cy.get(dialog).within(() => {
cy.get(dialogHeader) cy.getByTestId(dialogHeader)
.should('be.visible') .should('be.visible')
.and('have.text', 'SELECT A VEGA KEY'); .and('have.text', 'SELECT A VEGA KEY');
}); });
@ -238,7 +240,7 @@ context(
'contain.text', 'contain.text',
truncatedPubKey1 truncatedPubKey1
); );
cy.get(dialogVegaKey) cy.getByTestId(dialogVegaKey)
.should('be.visible') .should('be.visible')
.and('contain.text', truncatedPubKey1) .and('contain.text', truncatedPubKey1)
.and('contain.text', truncatedPubKey2); .and('contain.text', truncatedPubKey2);
@ -248,7 +250,7 @@ context(
// 0002-WCON-029 // 0002-WCON-029
it('should have copy public key button visible', function () { it('should have copy public key button visible', function () {
cy.get(dialog).within(() => { cy.get(dialog).within(() => {
cy.get(copyPublicKeyBtn) cy.getByTestId(copyPublicKeyBtn)
.should('be.visible') .should('be.visible')
.and('contain.text', 'Copy'); .and('contain.text', 'Copy');
}); });
@ -256,13 +258,13 @@ context(
it('should have close button visible', function () { it('should have close button visible', function () {
cy.get(dialog).within(() => { cy.get(dialog).within(() => {
cy.get(dialogCloseBtn).should('be.visible'); cy.getByTestId(dialogCloseBtn).should('be.visible');
}); });
}); });
it('should have vega Disconnect all keys button visible', function () { it('should have vega Disconnect all keys button visible', function () {
cy.get(dialog).within(() => { cy.get(dialog).within(() => {
cy.get(dialogDisconnectBtn) cy.getByTestId(dialogDisconnectBtn)
.should('be.visible') .should('be.visible')
.and('have.text', 'Disconnect all keys'); .and('have.text', 'Disconnect all keys');
}); });
@ -271,10 +273,10 @@ context(
// 0002-WCON-022 // 0002-WCON-022
it('should be able to disconnect all keys', function () { it('should be able to disconnect all keys', function () {
cy.get(dialog).within(() => { cy.get(dialog).within(() => {
cy.get(dialogDisconnectBtn).click(); cy.getByTestId(dialogDisconnectBtn).click();
}); });
cy.get(walletContainer).within(() => { cy.get(walletContainer).within(() => {
cy.get(connectButton).should('be.visible'); // 0002-WCON-023 cy.getByTestId(connectButton).should('be.visible'); // 0002-WCON-023
}); });
}); });
}); });
@ -319,16 +321,22 @@ context(
cy.reload(); cy.reload();
waitForSpinner(); waitForSpinner();
cy.connectVegaWallet(); cy.connectVegaWallet();
cy.get(walletContainer).within(() => {
cy.getByTestId('currency-title', txTimeout).should(
'have.length.at.least',
5
);
});
}); });
for (const { name, symbol, expectedAmount } of assets) { for (const { name, symbol, expectedAmount } of assets) {
it(`should see ${name} within vega wallet`, () => { it(`should see ${name} within vega wallet`, () => {
cy.get(walletContainer).within(() => { cy.get(walletContainer).within(() => {
cy.get(vegaWalletCurrencyTitle) cy.getByTestId(vegaWalletCurrencyTitle)
.contains(name, txTimeout) .contains(name, txTimeout)
.should('be.visible'); .should('be.visible');
cy.get(vegaWalletCurrencyTitle) cy.getByTestId(vegaWalletCurrencyTitle)
.contains(name) .contains(name)
.parent() .parent()
.siblings() .siblings()
@ -337,7 +345,7 @@ context(
expect(displayedAmount).be.gte(expectedAmount); expect(displayedAmount).be.gte(expectedAmount);
}); });
cy.get(vegaWalletCurrencyTitle) cy.getByTestId(vegaWalletCurrencyTitle)
.contains(name) .contains(name)
.parent() .parent()
.contains(symbol); .contains(symbol);

View File

@ -5,8 +5,6 @@ import {
verifyTabHighlighted, verifyTabHighlighted,
} from '../../support/common.functions'; } from '../../support/common.functions';
const connectToVegaBtn = '[data-testid="connect-to-vega-wallet-btn"]';
context( context(
'Withdraw Page - verify elements on page', 'Withdraw Page - verify elements on page',
{ tags: '@smoke' }, { tags: '@smoke' },
@ -26,7 +24,7 @@ context(
}); });
it('should have connect Vega wallet button', function () { it('should have connect Vega wallet button', function () {
cy.get(connectToVegaBtn) cy.getByTestId('connect-to-vega-wallet-btn')
.should('be.visible') .should('be.visible')
.and('have.text', 'Connect Vega wallet'); .and('have.text', 'Connect Vega wallet');
}); });

View File

@ -139,6 +139,9 @@ async function vegaWalletTeardownStaking(stakingBridgeContract: StakingBridge) {
$associatedAmount $associatedAmount
); );
}); });
// Wait needed to allow Eth transaction to complete - otherwise could result in nonce error
// eslint-disable-next-line cypress/no-unnecessary-waiting
cy.wait(2000);
} }
}); });
}); });