Test/governance flows update (#1523)
* test: update governance flows with new ui change * chore: existing governance flow tests passing * chore: remove unused import * chore: remove unused var
This commit is contained in:
parent
0c5b2f5c29
commit
7a7c4ad452
@ -10,12 +10,9 @@ const vegaWallet = '[data-testid="vega-wallet"]';
|
|||||||
const vegaWalletName = Cypress.env('vegaWalletName');
|
const vegaWalletName = Cypress.env('vegaWalletName');
|
||||||
const vegaWalletPassphrase = Cypress.env('vegaWalletPassphrase');
|
const vegaWalletPassphrase = Cypress.env('vegaWalletPassphrase');
|
||||||
const connectToVegaWalletButton = '[data-testid="connect-to-vega-wallet-btn"]';
|
const connectToVegaWalletButton = '[data-testid="connect-to-vega-wallet-btn"]';
|
||||||
const newProposalButton = '[data-testid="new-proposal-link"]';
|
|
||||||
const newProposalDatabox = '[data-testid="proposal-data"]';
|
|
||||||
const newProposalSubmitButton = '[data-testid="proposal-submit"]';
|
const newProposalSubmitButton = '[data-testid="proposal-submit"]';
|
||||||
const dialogCloseButton = '[data-testid="dialog-close"]';
|
const dialogCloseButton = '[data-testid="dialog-close"]';
|
||||||
const viewProposalButton = '[data-testid="view-proposal-btn"]';
|
const viewProposalButton = '[data-testid="view-proposal-btn"]';
|
||||||
const proposalInformationTableRows = '[data-testid="key-value-table-row"]';
|
|
||||||
const openProposals = '[data-testid="open-proposals"]';
|
const openProposals = '[data-testid="open-proposals"]';
|
||||||
const proposalResponseProposalIdPath =
|
const proposalResponseProposalIdPath =
|
||||||
'response.body.data.busEvents.0.event.id';
|
'response.body.data.busEvents.0.event.id';
|
||||||
@ -30,6 +27,7 @@ const proposalVoteProgressAgainstTokens =
|
|||||||
const changeVoteButton = '[data-testid="change-vote-button"]';
|
const changeVoteButton = '[data-testid="change-vote-button"]';
|
||||||
const proposalDetailsTitle = '[data-testid="proposal-title"]';
|
const proposalDetailsTitle = '[data-testid="proposal-title"]';
|
||||||
const proposalDetailsDescription = '[data-testid="proposal-description"]';
|
const proposalDetailsDescription = '[data-testid="proposal-description"]';
|
||||||
|
const proposalVoteDeadline = '[data-testid="proposal-vote-deadline"]';
|
||||||
const voteButtons = '[data-testid="vote-buttons"]';
|
const voteButtons = '[data-testid="vote-buttons"]';
|
||||||
const voteStatus = '[data-testid="vote-status"]';
|
const voteStatus = '[data-testid="vote-status"]';
|
||||||
const rejectProposalsLink = '[href="/governance/rejected"]';
|
const rejectProposalsLink = '[href="/governance/rejected"]';
|
||||||
@ -39,6 +37,14 @@ const epochTimeout = Cypress.env('epochTimeout');
|
|||||||
const proposalTimeout = { timeout: 14000 };
|
const proposalTimeout = { timeout: 14000 };
|
||||||
const restConnectorForm = '[data-testid="rest-connector-form"]';
|
const restConnectorForm = '[data-testid="rest-connector-form"]';
|
||||||
|
|
||||||
|
const governanceProposalType = {
|
||||||
|
NETWORK_PARAMETER: 'Network parameter',
|
||||||
|
NEW_MARKET: 'New market',
|
||||||
|
UPDATE_MARKET: 'Update market',
|
||||||
|
NEW_ASSET: 'New asset',
|
||||||
|
FREEFORM: 'Freeform',
|
||||||
|
};
|
||||||
|
|
||||||
context(
|
context(
|
||||||
'Governance flow - with eth and vega wallets connected',
|
'Governance flow - with eth and vega wallets connected',
|
||||||
{ tags: '@slow' },
|
{ tags: '@slow' },
|
||||||
@ -73,6 +79,16 @@ context(
|
|||||||
'h'
|
'h'
|
||||||
)[0] / 24
|
)[0] / 24
|
||||||
).as('maxCloseDays');
|
).as('maxCloseDays');
|
||||||
|
cy.wrap(
|
||||||
|
network_parameters['governance.proposal.freeform.minClose'].split(
|
||||||
|
'h'
|
||||||
|
)[0]
|
||||||
|
).as('minCloseHours');
|
||||||
|
cy.wrap(
|
||||||
|
network_parameters['governance.proposal.freeform.maxClose'].split(
|
||||||
|
'h'
|
||||||
|
)[0]
|
||||||
|
).as('maxCloseHours');
|
||||||
});
|
});
|
||||||
cy.vega_wallet_connect();
|
cy.vega_wallet_connect();
|
||||||
cy.vega_wallet_set_specified_approval_amount('1000');
|
cy.vega_wallet_set_specified_approval_amount('1000');
|
||||||
@ -125,7 +141,7 @@ context(
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('Submit a proposal form - shows how many vega tokens are required to make a proposal', function () {
|
it('Submit a proposal form - shows how many vega tokens are required to make a proposal', function () {
|
||||||
cy.get(newProposalButton).should('be.visible').click();
|
cy.go_to_make_new_proposal(governanceProposalType.NEW_MARKET);
|
||||||
cy.contains(
|
cy.contains(
|
||||||
`You must have at least ${this.minProposerBalance} VEGA associated to make a proposal`
|
`You must have at least ${this.minProposerBalance} VEGA associated to make a proposal`
|
||||||
).should('be.visible');
|
).should('be.visible');
|
||||||
@ -135,13 +151,9 @@ context(
|
|||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
this.minProposerBalance
|
this.minProposerBalance
|
||||||
);
|
);
|
||||||
cy.navigate_to_page_if_not_allready_loaded('governance');
|
cy.navigate_to_page_if_not_already_loaded('governance');
|
||||||
cy.get(newProposalButton).should('be.visible').click();
|
cy.go_to_make_new_proposal(governanceProposalType.FREEFORM);
|
||||||
cy.create_ten_digit_unix_timestamp_for_specified_days('7').then(
|
cy.enter_unique_freeform_proposal_body('50');
|
||||||
(closingDateTimestamp) => {
|
|
||||||
cy.enter_unique_freeform_proposal_body(closingDateTimestamp);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
cy.get(newProposalSubmitButton).should('be.visible').click();
|
cy.get(newProposalSubmitButton).should('be.visible').click();
|
||||||
cy.contains('Confirm transaction in wallet', epochTimeout).should(
|
cy.contains('Confirm transaction in wallet', epochTimeout).should(
|
||||||
'be.visible'
|
'be.visible'
|
||||||
@ -157,7 +169,7 @@ context(
|
|||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
this.minProposerBalance
|
this.minProposerBalance
|
||||||
);
|
);
|
||||||
cy.navigate_to_page_if_not_allready_loaded('governance');
|
cy.navigate_to_page_if_not_already_loaded('governance');
|
||||||
cy.get(vegaWalletUnstakedBalance, txTimeout).should(
|
cy.get(vegaWalletUnstakedBalance, txTimeout).should(
|
||||||
'contain',
|
'contain',
|
||||||
this.minProposerBalance,
|
this.minProposerBalance,
|
||||||
@ -176,12 +188,8 @@ context(
|
|||||||
|
|
||||||
cy.navigate_to('governance');
|
cy.navigate_to('governance');
|
||||||
cy.wait_for_spinner();
|
cy.wait_for_spinner();
|
||||||
cy.get(newProposalButton).should('be.visible').click();
|
cy.go_to_make_new_proposal(governanceProposalType.FREEFORM);
|
||||||
cy.create_ten_digit_unix_timestamp_for_specified_days('7').then(
|
cy.enter_unique_freeform_proposal_body('50');
|
||||||
(closingDateTimestamp) => {
|
|
||||||
cy.enter_unique_freeform_proposal_body(closingDateTimestamp);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
cy.get(newProposalSubmitButton).should('be.visible').click();
|
cy.get(newProposalSubmitButton).should('be.visible').click();
|
||||||
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
||||||
'be.visible'
|
'be.visible'
|
||||||
@ -194,13 +202,9 @@ context(
|
|||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
this.minProposerBalance
|
this.minProposerBalance
|
||||||
);
|
);
|
||||||
cy.navigate_to_page_if_not_allready_loaded('governance');
|
cy.navigate_to_page_if_not_already_loaded('governance');
|
||||||
cy.get(newProposalButton).should('be.visible').click();
|
cy.go_to_make_new_proposal(governanceProposalType.FREEFORM);
|
||||||
cy.create_ten_digit_unix_timestamp_for_specified_days('7').then(
|
cy.enter_unique_freeform_proposal_body('50');
|
||||||
(closingDateTimestamp) => {
|
|
||||||
cy.enter_unique_freeform_proposal_body(closingDateTimestamp);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
cy.get(newProposalSubmitButton).should('be.visible').click();
|
cy.get(newProposalSubmitButton).should('be.visible').click();
|
||||||
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
||||||
'be.visible'
|
'be.visible'
|
||||||
@ -223,13 +227,9 @@ context(
|
|||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
this.minProposerBalance
|
this.minProposerBalance
|
||||||
);
|
);
|
||||||
cy.navigate_to_page_if_not_allready_loaded('governance');
|
cy.navigate_to_page_if_not_already_loaded('governance');
|
||||||
cy.get(newProposalButton).should('be.visible').click();
|
cy.go_to_make_new_proposal(governanceProposalType.FREEFORM);
|
||||||
cy.create_ten_digit_unix_timestamp_for_specified_days('7').then(
|
cy.enter_unique_freeform_proposal_body('50');
|
||||||
(closingDateTimestamp) => {
|
|
||||||
cy.enter_unique_freeform_proposal_body(closingDateTimestamp);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
cy.get(newProposalSubmitButton).should('be.visible').click();
|
cy.get(newProposalSubmitButton).should('be.visible').click();
|
||||||
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
||||||
'be.visible'
|
'be.visible'
|
||||||
@ -252,15 +252,9 @@ context(
|
|||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
this.minProposerBalance
|
this.minProposerBalance
|
||||||
);
|
);
|
||||||
cy.navigate_to_page_if_not_allready_loaded('governance');
|
cy.navigate_to_page_if_not_already_loaded('governance');
|
||||||
cy.get(newProposalButton).should('be.visible').click();
|
cy.go_to_make_new_proposal(governanceProposalType.FREEFORM);
|
||||||
cy.create_ten_digit_unix_timestamp_for_specified_days('8').then(
|
cy.enter_unique_freeform_proposal_body('50').as('freeformProposal');
|
||||||
(closingDateTimestamp) => {
|
|
||||||
cy.enter_unique_freeform_proposal_body(closingDateTimestamp).as(
|
|
||||||
'freeformProposal'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
cy.get(newProposalSubmitButton).should('be.visible').click();
|
cy.get(newProposalSubmitButton).should('be.visible').click();
|
||||||
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
||||||
'be.visible'
|
'be.visible'
|
||||||
@ -297,13 +291,9 @@ context(
|
|||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
this.minProposerBalance
|
this.minProposerBalance
|
||||||
);
|
);
|
||||||
cy.navigate_to_page_if_not_allready_loaded('governance');
|
cy.navigate_to_page_if_not_already_loaded('governance');
|
||||||
cy.get(newProposalButton).should('be.visible').click();
|
cy.go_to_make_new_proposal(governanceProposalType.FREEFORM);
|
||||||
cy.create_ten_digit_unix_timestamp_for_specified_days('8').then(
|
cy.enter_unique_freeform_proposal_body('50');
|
||||||
(closingDateTimestamp) => {
|
|
||||||
cy.enter_unique_freeform_proposal_body(closingDateTimestamp);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
cy.get(newProposalSubmitButton).should('be.visible').click();
|
cy.get(newProposalSubmitButton).should('be.visible').click();
|
||||||
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
||||||
'be.visible'
|
'be.visible'
|
||||||
@ -330,32 +320,29 @@ context(
|
|||||||
// 1004-VOTE-005
|
// 1004-VOTE-005
|
||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
this.minProposerBalance
|
this.minProposerBalance
|
||||||
);
|
).then(() => {
|
||||||
|
let proposalHours = [
|
||||||
|
(Number(this.minCloseHours) + 1).toString(),
|
||||||
|
this.maxCloseHours,
|
||||||
|
(Number(this.minCloseHours) + 3).toString(),
|
||||||
|
(Number(this.minCloseHours) + 2).toString(),
|
||||||
|
];
|
||||||
|
for (var index = 0; index < proposalHours.length; index++) {
|
||||||
|
cy.navigate_to_page_if_not_already_loaded('governance');
|
||||||
|
cy.go_to_make_new_proposal(governanceProposalType.FREEFORM);
|
||||||
|
cy.enter_unique_freeform_proposal_body(proposalHours[index]);
|
||||||
|
cy.get(newProposalSubmitButton).should('be.visible').click();
|
||||||
|
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
||||||
|
'be.visible'
|
||||||
|
);
|
||||||
|
cy.contains('Proposal submitted', proposalTimeout).should(
|
||||||
|
'be.visible'
|
||||||
|
);
|
||||||
|
cy.get(dialogCloseButton).click();
|
||||||
|
cy.wait_for_proposal_sync();
|
||||||
|
}
|
||||||
|
});
|
||||||
// Ensuring that proposals are not posted in same order as sort order
|
// Ensuring that proposals are not posted in same order as sort order
|
||||||
let proposalDays = [
|
|
||||||
this.minCloseDays + 1,
|
|
||||||
this.maxCloseDays,
|
|
||||||
this.minCloseDays + 3,
|
|
||||||
this.minCloseDays + 2,
|
|
||||||
];
|
|
||||||
for (var index = 0; index < proposalDays.length; index++) {
|
|
||||||
cy.navigate_to_page_if_not_allready_loaded('governance');
|
|
||||||
cy.get(newProposalButton).should('be.visible').click();
|
|
||||||
cy.create_ten_digit_unix_timestamp_for_specified_days(
|
|
||||||
proposalDays[index]
|
|
||||||
).then((closingDateTimestamp) => {
|
|
||||||
cy.enter_unique_freeform_proposal_body(closingDateTimestamp);
|
|
||||||
});
|
|
||||||
cy.get(newProposalSubmitButton).should('be.visible').click();
|
|
||||||
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
|
||||||
'be.visible'
|
|
||||||
);
|
|
||||||
cy.contains('Proposal submitted', proposalTimeout).should(
|
|
||||||
'be.visible'
|
|
||||||
);
|
|
||||||
cy.get(dialogCloseButton).click();
|
|
||||||
cy.wait_for_proposal_sync();
|
|
||||||
}
|
|
||||||
|
|
||||||
let arrayOfProposals = [];
|
let arrayOfProposals = [];
|
||||||
|
|
||||||
@ -379,13 +366,9 @@ context(
|
|||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
this.minProposerBalance
|
this.minProposerBalance
|
||||||
);
|
);
|
||||||
cy.navigate_to_page_if_not_allready_loaded('governance');
|
cy.navigate_to_page_if_not_already_loaded('governance');
|
||||||
cy.get(newProposalButton).should('be.visible').click();
|
cy.go_to_make_new_proposal(governanceProposalType.FREEFORM);
|
||||||
cy.create_ten_digit_unix_timestamp_for_specified_days('7').then(
|
cy.enter_unique_freeform_proposal_body('50');
|
||||||
(closingDateTimestamp) => {
|
|
||||||
cy.enter_unique_freeform_proposal_body(closingDateTimestamp);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
cy.get(newProposalSubmitButton).should('be.visible').click();
|
cy.get(newProposalSubmitButton).should('be.visible').click();
|
||||||
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
||||||
'be.visible'
|
'be.visible'
|
||||||
@ -406,13 +389,13 @@ context(
|
|||||||
cy.get_proposal_information_from_table('Total Supply')
|
cy.get_proposal_information_from_table('Total Supply')
|
||||||
.invoke('text')
|
.invoke('text')
|
||||||
.then((totalSupply) => {
|
.then((totalSupply) => {
|
||||||
let tokensRequiredToAcheiveResult = parseFloat(
|
let tokensRequiredToAchieveResult = parseFloat(
|
||||||
(totalSupply.replace(/,/g, '') * this.requiredParticipation) / 100
|
(totalSupply.replace(/,/g, '') * this.requiredParticipation) / 100
|
||||||
).toFixed(2);
|
).toFixed(2);
|
||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
tokensRequiredToAcheiveResult
|
tokensRequiredToAchieveResult
|
||||||
);
|
);
|
||||||
cy.navigate_to_page_if_not_allready_loaded('governance');
|
cy.navigate_to_page_if_not_already_loaded('governance');
|
||||||
cy.get('@submittedProposal').within(() =>
|
cy.get('@submittedProposal').within(() =>
|
||||||
cy.get(viewProposalButton).click()
|
cy.get(viewProposalButton).click()
|
||||||
);
|
);
|
||||||
@ -432,14 +415,8 @@ context(
|
|||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
this.minProposerBalance
|
this.minProposerBalance
|
||||||
);
|
);
|
||||||
cy.get(newProposalButton).should('be.visible').click();
|
cy.go_to_make_new_proposal(governanceProposalType.FREEFORM);
|
||||||
cy.create_ten_digit_unix_timestamp_for_specified_days('8').then(
|
cy.enter_unique_freeform_proposal_body('50').as('freeformProposal');
|
||||||
(closingDateTimestamp) => {
|
|
||||||
cy.enter_unique_freeform_proposal_body(closingDateTimestamp).as(
|
|
||||||
'freeformProposal'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
cy.get(newProposalSubmitButton).should('be.visible').click();
|
cy.get(newProposalSubmitButton).should('be.visible').click();
|
||||||
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
||||||
'be.visible'
|
'be.visible'
|
||||||
@ -474,15 +451,9 @@ context(
|
|||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
this.minProposerBalance
|
this.minProposerBalance
|
||||||
);
|
);
|
||||||
cy.navigate_to_page_if_not_allready_loaded('governance');
|
cy.navigate_to_page_if_not_already_loaded('governance');
|
||||||
cy.get(newProposalButton).should('be.visible').click();
|
cy.go_to_make_new_proposal(governanceProposalType.FREEFORM);
|
||||||
cy.create_ten_digit_unix_timestamp_for_specified_days('8').then(
|
cy.enter_unique_freeform_proposal_body('50').as('freeformProposal');
|
||||||
(closingDateTimestamp) => {
|
|
||||||
cy.enter_unique_freeform_proposal_body(closingDateTimestamp).as(
|
|
||||||
'freeformProposal'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
cy.get(newProposalSubmitButton).should('be.visible').click();
|
cy.get(newProposalSubmitButton).should('be.visible').click();
|
||||||
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
||||||
'be.visible'
|
'be.visible'
|
||||||
@ -517,13 +488,9 @@ context(
|
|||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
this.minProposerBalance
|
this.minProposerBalance
|
||||||
);
|
);
|
||||||
cy.navigate_to_page_if_not_allready_loaded('governance');
|
cy.navigate_to_page_if_not_already_loaded('governance');
|
||||||
cy.get(newProposalButton).should('be.visible').click();
|
cy.go_to_make_new_proposal(governanceProposalType.FREEFORM);
|
||||||
cy.create_ten_digit_unix_timestamp_for_specified_days('8').then(
|
cy.enter_unique_freeform_proposal_body('50');
|
||||||
(closingDateTimestamp) => {
|
|
||||||
cy.enter_unique_freeform_proposal_body(closingDateTimestamp);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
cy.get(newProposalSubmitButton).should('be.visible').click();
|
cy.get(newProposalSubmitButton).should('be.visible').click();
|
||||||
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
||||||
'be.visible'
|
'be.visible'
|
||||||
@ -554,14 +521,15 @@ context(
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('Newly created freeform proposal details - shows proposed and closing dates', function () {
|
it('Newly created freeform proposal details - shows proposed and closing dates', function () {
|
||||||
|
const closingVoteHrs = '72';
|
||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
this.minProposerBalance
|
this.minProposerBalance
|
||||||
);
|
);
|
||||||
cy.navigate_to_page_if_not_allready_loaded('governance');
|
cy.navigate_to_page_if_not_already_loaded('governance');
|
||||||
cy.get(newProposalButton).should('be.visible').click();
|
cy.go_to_make_new_proposal(governanceProposalType.FREEFORM);
|
||||||
cy.create_ten_digit_unix_timestamp_for_specified_days('9').then(
|
cy.create_ten_digit_unix_timestamp_for_specified_days('3').then(
|
||||||
(closingDateTimestamp) => {
|
(closingDateTimestamp) => {
|
||||||
cy.enter_unique_freeform_proposal_body(closingDateTimestamp);
|
cy.enter_unique_freeform_proposal_body(closingVoteHrs);
|
||||||
cy.get(newProposalSubmitButton).should('be.visible').click();
|
cy.get(newProposalSubmitButton).should('be.visible').click();
|
||||||
|
|
||||||
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
||||||
@ -594,7 +562,7 @@ context(
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
// 1004-VOTE-043
|
// 1004-VOTE-043
|
||||||
cy.contains('9 days left to vote').should('be.visible');
|
cy.contains('3 days left to vote').should('be.visible');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Newly created freeform proposal details - shows default status set to fail', function () {
|
it('Newly created freeform proposal details - shows default status set to fail', function () {
|
||||||
@ -603,13 +571,9 @@ context(
|
|||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
this.minProposerBalance
|
this.minProposerBalance
|
||||||
);
|
);
|
||||||
cy.navigate_to_page_if_not_allready_loaded('governance');
|
cy.navigate_to_page_if_not_already_loaded('governance');
|
||||||
cy.get(newProposalButton).should('be.visible').click();
|
cy.go_to_make_new_proposal(governanceProposalType.FREEFORM);
|
||||||
cy.create_ten_digit_unix_timestamp_for_specified_days('7').then(
|
cy.enter_unique_freeform_proposal_body('50');
|
||||||
(closingDateTimestamp) => {
|
|
||||||
cy.enter_unique_freeform_proposal_body(closingDateTimestamp);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
cy.get(newProposalSubmitButton).should('be.visible').click();
|
cy.get(newProposalSubmitButton).should('be.visible').click();
|
||||||
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
||||||
'be.visible'
|
'be.visible'
|
||||||
@ -643,13 +607,9 @@ context(
|
|||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
this.minProposerBalance
|
this.minProposerBalance
|
||||||
);
|
);
|
||||||
cy.navigate_to_page_if_not_allready_loaded('governance');
|
cy.navigate_to_page_if_not_already_loaded('governance');
|
||||||
cy.get(newProposalButton).should('be.visible').click();
|
cy.go_to_make_new_proposal(governanceProposalType.FREEFORM);
|
||||||
cy.create_ten_digit_unix_timestamp_for_specified_days('7').then(
|
cy.enter_unique_freeform_proposal_body('50');
|
||||||
(closingDateTimestamp) => {
|
|
||||||
cy.enter_unique_freeform_proposal_body(closingDateTimestamp);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
cy.get(newProposalSubmitButton).should('be.visible').click();
|
cy.get(newProposalSubmitButton).should('be.visible').click();
|
||||||
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
||||||
'be.visible'
|
'be.visible'
|
||||||
@ -714,13 +674,9 @@ context(
|
|||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
this.minProposerBalance
|
this.minProposerBalance
|
||||||
);
|
);
|
||||||
cy.navigate_to_page_if_not_allready_loaded('governance');
|
cy.navigate_to_page_if_not_already_loaded('governance');
|
||||||
cy.get(newProposalButton).should('be.visible').click();
|
cy.go_to_make_new_proposal(governanceProposalType.FREEFORM);
|
||||||
cy.create_ten_digit_unix_timestamp_for_specified_days('7').then(
|
cy.enter_unique_freeform_proposal_body('50');
|
||||||
(closingDateTimestamp) => {
|
|
||||||
cy.enter_unique_freeform_proposal_body(closingDateTimestamp);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
cy.get(newProposalSubmitButton).should('be.visible').click();
|
cy.get(newProposalSubmitButton).should('be.visible').click();
|
||||||
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
||||||
'be.visible'
|
'be.visible'
|
||||||
@ -779,13 +735,9 @@ context(
|
|||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
this.minProposerBalance
|
this.minProposerBalance
|
||||||
);
|
);
|
||||||
cy.navigate_to_page_if_not_allready_loaded('governance');
|
cy.navigate_to_page_if_not_already_loaded('governance');
|
||||||
cy.get(newProposalButton).should('be.visible').click();
|
cy.go_to_make_new_proposal(governanceProposalType.FREEFORM);
|
||||||
cy.create_ten_digit_unix_timestamp_for_specified_days('7').then(
|
cy.enter_unique_freeform_proposal_body('50');
|
||||||
(closingDateTimestamp) => {
|
|
||||||
cy.enter_unique_freeform_proposal_body(closingDateTimestamp);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
cy.get(newProposalSubmitButton).should('be.visible').click();
|
cy.get(newProposalSubmitButton).should('be.visible').click();
|
||||||
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
||||||
'be.visible'
|
'be.visible'
|
||||||
@ -837,13 +789,9 @@ context(
|
|||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
this.minProposerBalance
|
this.minProposerBalance
|
||||||
);
|
);
|
||||||
cy.navigate_to_page_if_not_allready_loaded('governance');
|
cy.navigate_to_page_if_not_already_loaded('governance');
|
||||||
cy.get(newProposalButton).should('be.visible').click();
|
cy.go_to_make_new_proposal(governanceProposalType.FREEFORM);
|
||||||
cy.create_ten_digit_unix_timestamp_for_specified_days('7').then(
|
cy.enter_unique_freeform_proposal_body('50');
|
||||||
(closingDateTimestamp) => {
|
|
||||||
cy.enter_unique_freeform_proposal_body(closingDateTimestamp);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
cy.get(newProposalSubmitButton).should('be.visible').click();
|
cy.get(newProposalSubmitButton).should('be.visible').click();
|
||||||
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
||||||
'be.visible'
|
'be.visible'
|
||||||
@ -893,13 +841,9 @@ context(
|
|||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
this.minProposerBalance
|
this.minProposerBalance
|
||||||
);
|
);
|
||||||
cy.navigate_to_page_if_not_allready_loaded('governance');
|
cy.navigate_to_page_if_not_already_loaded('governance');
|
||||||
cy.get(newProposalButton).should('be.visible').click();
|
cy.go_to_make_new_proposal(governanceProposalType.FREEFORM);
|
||||||
cy.create_ten_digit_unix_timestamp_for_specified_days('7').then(
|
cy.enter_unique_freeform_proposal_body('50');
|
||||||
(closingDateTimestamp) => {
|
|
||||||
cy.enter_unique_freeform_proposal_body(closingDateTimestamp);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
cy.get(newProposalSubmitButton).should('be.visible').click();
|
cy.get(newProposalSubmitButton).should('be.visible').click();
|
||||||
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
||||||
'be.visible'
|
'be.visible'
|
||||||
@ -918,13 +862,13 @@ context(
|
|||||||
cy.get_proposal_information_from_table('Total Supply')
|
cy.get_proposal_information_from_table('Total Supply')
|
||||||
.invoke('text')
|
.invoke('text')
|
||||||
.then((totalSupply) => {
|
.then((totalSupply) => {
|
||||||
let tokensRequiredToAcheiveResult = parseFloat(
|
let tokensRequiredToAchieveResult = parseFloat(
|
||||||
(totalSupply.replace(/,/g, '') * this.requiredParticipation) / 100
|
(totalSupply.replace(/,/g, '') * this.requiredParticipation) / 100
|
||||||
).toFixed(2);
|
).toFixed(2);
|
||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
tokensRequiredToAcheiveResult
|
tokensRequiredToAchieveResult
|
||||||
);
|
);
|
||||||
cy.navigate_to_page_if_not_allready_loaded('governance');
|
cy.navigate_to_page_if_not_already_loaded('governance');
|
||||||
cy.get('@submittedProposal').within(() =>
|
cy.get('@submittedProposal').within(() =>
|
||||||
cy.get(viewProposalButton).click()
|
cy.get(viewProposalButton).click()
|
||||||
);
|
);
|
||||||
@ -936,13 +880,13 @@ context(
|
|||||||
.and('be.visible');
|
.and('be.visible');
|
||||||
// 1004-VOTE-065
|
// 1004-VOTE-065
|
||||||
cy.get(proposalVoteProgressForTokens)
|
cy.get(proposalVoteProgressForTokens)
|
||||||
.contains(tokensRequiredToAcheiveResult)
|
.contains(tokensRequiredToAchieveResult)
|
||||||
.and('be.visible');
|
.and('be.visible');
|
||||||
cy.get(proposalVoteProgressAgainstTokens)
|
cy.get(proposalVoteProgressAgainstTokens)
|
||||||
.contains('0.00')
|
.contains('0.00')
|
||||||
.and('be.visible');
|
.and('be.visible');
|
||||||
cy.get_proposal_information_from_table('Tokens for proposal')
|
cy.get_proposal_information_from_table('Tokens for proposal')
|
||||||
.should('have.text', tokensRequiredToAcheiveResult)
|
.should('have.text', tokensRequiredToAchieveResult)
|
||||||
.and('be.visible');
|
.and('be.visible');
|
||||||
cy.get_proposal_information_from_table('Tokens against proposal')
|
cy.get_proposal_information_from_table('Tokens against proposal')
|
||||||
.should('have.text', '0.00')
|
.should('have.text', '0.00')
|
||||||
@ -973,67 +917,36 @@ context(
|
|||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
this.minProposerBalance
|
this.minProposerBalance
|
||||||
);
|
);
|
||||||
cy.navigate_to_page_if_not_allready_loaded('governance');
|
cy.navigate_to_page_if_not_already_loaded('governance');
|
||||||
cy.get(newProposalButton).should('be.visible').click();
|
cy.go_to_make_new_proposal(governanceProposalType.FREEFORM);
|
||||||
cy.create_ten_digit_unix_timestamp_for_specified_days(
|
cy.enter_unique_freeform_proposal_body('40');
|
||||||
this.minCloseDays - 1
|
|
||||||
).then((closingDateTimestamp) => {
|
|
||||||
cy.enter_unique_freeform_proposal_body(closingDateTimestamp);
|
|
||||||
});
|
|
||||||
cy.get(newProposalSubmitButton).should('be.visible').click();
|
cy.get(newProposalSubmitButton).should('be.visible').click();
|
||||||
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
||||||
'be.visible'
|
'not.exist'
|
||||||
);
|
);
|
||||||
cy.contains('Proposal rejected', proposalTimeout).should('be.visible');
|
|
||||||
cy.get(dialogCloseButton).click();
|
|
||||||
cy.wait_for_proposal_sync();
|
|
||||||
cy.navigate_to('governance');
|
|
||||||
cy.wait_for_spinner();
|
|
||||||
cy.get(rejectProposalsLink).click().wait_for_spinner();
|
|
||||||
cy.get_submitted_proposal_from_proposal_list().within(() => {
|
|
||||||
cy.contains('Rejected').should('be.visible');
|
|
||||||
cy.contains('Close time too soon').should('be.visible');
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Creating a proposal - proposal rejected - when closing time later than system default', function () {
|
it('Creating a proposal - proposal rejected - when closing time later than system default', function () {
|
||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
this.minProposerBalance
|
this.minProposerBalance
|
||||||
);
|
);
|
||||||
cy.navigate_to_page_if_not_allready_loaded('governance');
|
cy.navigate_to_page_if_not_already_loaded('governance');
|
||||||
cy.get(newProposalButton).should('be.visible').click();
|
cy.go_to_make_new_proposal(governanceProposalType.FREEFORM);
|
||||||
cy.create_ten_digit_unix_timestamp_for_specified_days(
|
cy.enter_unique_freeform_proposal_body('100000');
|
||||||
this.maxCloseDays + 1
|
|
||||||
).then((closingDateTimestamp) => {
|
|
||||||
cy.enter_unique_freeform_proposal_body(closingDateTimestamp);
|
|
||||||
});
|
|
||||||
cy.get(newProposalSubmitButton).should('be.visible').click();
|
cy.get(newProposalSubmitButton).should('be.visible').click();
|
||||||
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
||||||
'be.visible'
|
'not.exist'
|
||||||
);
|
);
|
||||||
cy.contains('Proposal rejected', proposalTimeout).should('be.visible');
|
|
||||||
cy.get(dialogCloseButton).click();
|
|
||||||
cy.wait_for_proposal_sync();
|
|
||||||
cy.navigate_to('governance');
|
|
||||||
cy.wait_for_spinner();
|
|
||||||
cy.get(rejectProposalsLink).click().wait_for_spinner();
|
|
||||||
cy.get_submitted_proposal_from_proposal_list().within(() => {
|
|
||||||
cy.contains('Rejected').should('be.visible');
|
|
||||||
cy.contains('Close time too late').should('be.visible');
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Creating a proposal - proposal rejected - able to access rejected proposals', function () {
|
// No longer able to submit a rejected freeform proposal
|
||||||
|
it.skip('Creating a proposal - proposal rejected - able to access rejected proposals', function () {
|
||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
this.minProposerBalance
|
this.minProposerBalance
|
||||||
);
|
);
|
||||||
cy.navigate_to_page_if_not_allready_loaded('governance');
|
cy.navigate_to_page_if_not_already_loaded('governance');
|
||||||
cy.get(newProposalButton).should('be.visible').click();
|
cy.go_to_make_new_proposal(governanceProposalType.FREEFORM);
|
||||||
cy.create_ten_digit_unix_timestamp_for_specified_days(
|
cy.enter_unique_freeform_proposal_body('500000000');
|
||||||
this.maxCloseDays + 1
|
|
||||||
).then((closingDateTimestamp) => {
|
|
||||||
cy.enter_unique_freeform_proposal_body(closingDateTimestamp);
|
|
||||||
});
|
|
||||||
cy.get(newProposalSubmitButton).should('be.visible').click();
|
cy.get(newProposalSubmitButton).should('be.visible').click();
|
||||||
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
||||||
'be.visible'
|
'be.visible'
|
||||||
@ -1066,12 +979,8 @@ context(
|
|||||||
'0.000000000000000000',
|
'0.000000000000000000',
|
||||||
txTimeout
|
txTimeout
|
||||||
);
|
);
|
||||||
cy.get(newProposalButton).should('be.visible').click();
|
cy.go_to_make_new_proposal(governanceProposalType.FREEFORM);
|
||||||
cy.create_ten_digit_unix_timestamp_for_specified_days('1').then(
|
cy.enter_unique_freeform_proposal_body('49');
|
||||||
(closingDateTimestamp) => {
|
|
||||||
cy.enter_unique_freeform_proposal_body(closingDateTimestamp);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
cy.get(newProposalSubmitButton).should('be.visible').click();
|
cy.get(newProposalSubmitButton).should('be.visible').click();
|
||||||
|
|
||||||
cy.contains('Transaction failed', proposalTimeout).should('be.visible');
|
cy.contains('Transaction failed', proposalTimeout).should('be.visible');
|
||||||
@ -1086,13 +995,9 @@ context(
|
|||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
this.minProposerBalance - 0.000001
|
this.minProposerBalance - 0.000001
|
||||||
);
|
);
|
||||||
cy.navigate_to_page_if_not_allready_loaded('governance');
|
cy.navigate_to_page_if_not_already_loaded('governance');
|
||||||
cy.get(newProposalButton).should('be.visible').click();
|
cy.go_to_make_new_proposal(governanceProposalType.FREEFORM);
|
||||||
cy.create_ten_digit_unix_timestamp_for_specified_days('1').then(
|
cy.enter_unique_freeform_proposal_body('49');
|
||||||
(closingDateTimestamp) => {
|
|
||||||
cy.enter_unique_freeform_proposal_body(closingDateTimestamp);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
cy.get(newProposalSubmitButton).should('be.visible').click();
|
cy.get(newProposalSubmitButton).should('be.visible').click();
|
||||||
|
|
||||||
cy.contains('Transaction failed', proposalTimeout).should('be.visible');
|
cy.contains('Transaction failed', proposalTimeout).should('be.visible');
|
||||||
@ -1103,13 +1008,14 @@ context(
|
|||||||
.should('be.visible');
|
.should('be.visible');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Unable to create a freeform proposal - when json parent section contains unexpected field', function () {
|
// Json containing unexpected field no longer fails submission
|
||||||
|
it.skip('Unable to create a freeform proposal - when json parent section contains unexpected field', function () {
|
||||||
// 1004-VOTE-038
|
// 1004-VOTE-038
|
||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
this.minProposerBalance
|
this.minProposerBalance
|
||||||
);
|
);
|
||||||
cy.navigate_to_page_if_not_allready_loaded('governance');
|
cy.navigate_to_page_if_not_already_loaded('governance');
|
||||||
cy.get(newProposalButton).should('be.visible').click();
|
cy.go_to_make_new_proposal(governanceProposalType.FREEFORM);
|
||||||
cy.create_ten_digit_unix_timestamp_for_specified_days('1').then(
|
cy.create_ten_digit_unix_timestamp_for_specified_days('1').then(
|
||||||
(closingDateTimestamp) => {
|
(closingDateTimestamp) => {
|
||||||
cy.fixture('/proposals/freeform.json').then((freeformProposal) => {
|
cy.fixture('/proposals/freeform.json').then((freeformProposal) => {
|
||||||
@ -1117,10 +1023,14 @@ context(
|
|||||||
freeformProposal.unexpectfield = `i shouldn't be here`;
|
freeformProposal.unexpectfield = `i shouldn't be here`;
|
||||||
let proposalPayload = JSON.stringify(freeformProposal);
|
let proposalPayload = JSON.stringify(freeformProposal);
|
||||||
|
|
||||||
cy.get(newProposalDatabox).type(proposalPayload, {
|
cy.get(proposalDetailsTitle).type(
|
||||||
|
freeformProposal.rationale.title
|
||||||
|
);
|
||||||
|
cy.get(proposalDetailsDescription).type(proposalPayload, {
|
||||||
parseSpecialCharSequences: false,
|
parseSpecialCharSequences: false,
|
||||||
delay: 2,
|
delay: 2,
|
||||||
});
|
});
|
||||||
|
cy.get(proposalVoteDeadline).clear().click().type('50');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@ -1128,28 +1038,33 @@ context(
|
|||||||
|
|
||||||
cy.contains('Transaction failed', proposalTimeout).should('be.visible');
|
cy.contains('Transaction failed', proposalTimeout).should('be.visible');
|
||||||
cy.get(feedbackError)
|
cy.get(feedbackError)
|
||||||
.contains('Unknown field unexpectfield in vega commands')
|
.contains('Unknown field unexpectfield in vega proposal terms')
|
||||||
.should('be.visible');
|
.should('be.visible');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Unable to create a freeform proposal - when json terms section contains unexpected field', function () {
|
// Json containing unexpected field no longer fails submission
|
||||||
|
it.skip('Unable to create a freeform proposal - when json terms section contains unexpected field', function () {
|
||||||
// 1004-VOTE-038
|
// 1004-VOTE-038
|
||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
this.minProposerBalance
|
this.minProposerBalance
|
||||||
);
|
);
|
||||||
cy.navigate_to_page_if_not_allready_loaded('governance');
|
cy.navigate_to_page_if_not_already_loaded('governance');
|
||||||
cy.get(newProposalButton).should('be.visible').click();
|
cy.go_to_make_new_proposal(governanceProposalType.FREEFORM);
|
||||||
cy.create_ten_digit_unix_timestamp_for_specified_days('1').then(
|
cy.create_ten_digit_unix_timestamp_for_specified_days('1').then(
|
||||||
(closingDateTimestamp) => {
|
(closingDateTimestamp) => {
|
||||||
cy.fixture('/proposals/freeform.json').then((freeformProposal) => {
|
cy.fixture('/proposals/freeform.json').then((freeformProposal) => {
|
||||||
freeformProposal.terms.closingTimestamp = closingDateTimestamp;
|
freeformProposal.terms.closingTimestamp = closingDateTimestamp;
|
||||||
freeformProposal.terms.unexpectfield = `i shouldn't be here`;
|
freeformProposal.terms.unexpectedField = `i shouldn't be here`;
|
||||||
let proposalPayload = JSON.stringify(freeformProposal);
|
let proposalPayload = JSON.stringify(freeformProposal);
|
||||||
|
|
||||||
cy.get(newProposalDatabox).type(proposalPayload, {
|
cy.get(proposalDetailsTitle).type(
|
||||||
|
freeformProposal.rationale.title
|
||||||
|
);
|
||||||
|
cy.get(proposalDetailsDescription).type(proposalPayload, {
|
||||||
parseSpecialCharSequences: false,
|
parseSpecialCharSequences: false,
|
||||||
delay: 2,
|
delay: 2,
|
||||||
});
|
});
|
||||||
|
cy.get(proposalVoteDeadline).clear().click().type('50');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@ -1166,13 +1081,9 @@ context(
|
|||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
this.minProposerBalance
|
this.minProposerBalance
|
||||||
);
|
);
|
||||||
cy.navigate_to_page_if_not_allready_loaded('governance');
|
cy.navigate_to_page_if_not_already_loaded('governance');
|
||||||
cy.get(newProposalButton).should('be.visible').click();
|
cy.go_to_make_new_proposal(governanceProposalType.FREEFORM);
|
||||||
cy.create_ten_digit_unix_timestamp_for_specified_days('7').then(
|
cy.enter_unique_freeform_proposal_body('50');
|
||||||
(closingDateTimestamp) => {
|
|
||||||
cy.enter_unique_freeform_proposal_body(closingDateTimestamp);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
cy.get(newProposalSubmitButton).should('be.visible').click();
|
cy.get(newProposalSubmitButton).should('be.visible').click();
|
||||||
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
||||||
'be.visible'
|
'be.visible'
|
||||||
@ -1201,13 +1112,9 @@ context(
|
|||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
this.minProposerBalance
|
this.minProposerBalance
|
||||||
);
|
);
|
||||||
cy.navigate_to_page_if_not_allready_loaded('governance');
|
cy.navigate_to_page_if_not_already_loaded('governance');
|
||||||
cy.get(newProposalButton).should('be.visible').click();
|
cy.go_to_make_new_proposal(governanceProposalType.FREEFORM);
|
||||||
cy.create_ten_digit_unix_timestamp_for_specified_days('7').then(
|
cy.enter_unique_freeform_proposal_body('50');
|
||||||
(closingDateTimestamp) => {
|
|
||||||
cy.enter_unique_freeform_proposal_body(closingDateTimestamp);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
cy.get(newProposalSubmitButton).should('be.visible').click();
|
cy.get(newProposalSubmitButton).should('be.visible').click();
|
||||||
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
cy.contains('Awaiting network confirmation', epochTimeout).should(
|
||||||
'be.visible'
|
'be.visible'
|
||||||
@ -1254,175 +1161,6 @@ context(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
Cypress.Commands.add(
|
|
||||||
'convert_unix_timestamp_to_governance_data_table_date_format',
|
|
||||||
(unixTimestamp, monthTextLength = 'longMonth') => {
|
|
||||||
let dateSupplied = new Date(unixTimestamp * 1000),
|
|
||||||
year = dateSupplied.getFullYear(),
|
|
||||||
months = [
|
|
||||||
'January',
|
|
||||||
'February',
|
|
||||||
'March',
|
|
||||||
'April',
|
|
||||||
'May',
|
|
||||||
'June',
|
|
||||||
'July',
|
|
||||||
'August',
|
|
||||||
'September',
|
|
||||||
'October',
|
|
||||||
'November',
|
|
||||||
'December',
|
|
||||||
],
|
|
||||||
month = months[dateSupplied.getMonth()],
|
|
||||||
shortMonth = months[dateSupplied.getMonth()].substring(0, 3),
|
|
||||||
date = dateSupplied.getDate();
|
|
||||||
|
|
||||||
if (monthTextLength === 'longMonth')
|
|
||||||
return `${date} ${month} ${year}`;
|
|
||||||
else return `${date} ${shortMonth} ${year}`;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
Cypress.Commands.add(
|
|
||||||
'create_ten_digit_unix_timestamp_for_specified_days',
|
|
||||||
(durationDays) => {
|
|
||||||
let today = new Date();
|
|
||||||
let timestamp = today.setDate(
|
|
||||||
today.getDate() + parseInt(durationDays)
|
|
||||||
);
|
|
||||||
timestamp = Math.floor(timestamp / 1000);
|
|
||||||
|
|
||||||
return timestamp;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
Cypress.Commands.add(
|
|
||||||
'enter_unique_freeform_proposal_body',
|
|
||||||
(timestamp) => {
|
|
||||||
cy.fixture('/proposals/freeform.json').then((freeformProposal) => {
|
|
||||||
freeformProposal.terms.closingTimestamp = timestamp;
|
|
||||||
freeformProposal.rationale.title += timestamp;
|
|
||||||
let proposalPayload = JSON.stringify(freeformProposal);
|
|
||||||
|
|
||||||
cy.get(newProposalDatabox).type(proposalPayload, {
|
|
||||||
parseSpecialCharSequences: false,
|
|
||||||
delay: 2,
|
|
||||||
});
|
|
||||||
|
|
||||||
cy.wrap(freeformProposal);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
Cypress.Commands.add('get_network_parameters', () => {
|
|
||||||
let mutation = '{networkParameters {key value}}';
|
|
||||||
cy.request({
|
|
||||||
method: 'POST',
|
|
||||||
url: `http://localhost:3028/query`,
|
|
||||||
body: {
|
|
||||||
query: mutation,
|
|
||||||
},
|
|
||||||
headers: { 'content-type': 'application/json' },
|
|
||||||
})
|
|
||||||
.its(`body.data.networkParameters`)
|
|
||||||
.then(function (response) {
|
|
||||||
let object = response.reduce(function (r, e) {
|
|
||||||
r[e.key] = e.value;
|
|
||||||
return r;
|
|
||||||
}, {});
|
|
||||||
|
|
||||||
return object;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
Cypress.Commands.add('get_submitted_proposal_from_proposal_list', () => {
|
|
||||||
cy.wait('@proposalSubmissionCompletion')
|
|
||||||
.its(proposalResponseProposalIdPath)
|
|
||||||
.then((proposalId) => {
|
|
||||||
return cy.get(`#${proposalId}`);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
Cypress.Commands.add(
|
|
||||||
'get_governance_proposal_date_format_for_specified_days',
|
|
||||||
(days, shortOrLong) => {
|
|
||||||
cy.create_ten_digit_unix_timestamp_for_specified_days(days).then(
|
|
||||||
(date) => {
|
|
||||||
cy.convert_unix_timestamp_to_governance_data_table_date_format(
|
|
||||||
date,
|
|
||||||
shortOrLong
|
|
||||||
).then((convertedDate) => {
|
|
||||||
return convertedDate;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
Cypress.Commands.add('get_proposal_information_from_table', (heading) => {
|
|
||||||
cy.get(proposalInformationTableRows).contains(heading).siblings();
|
|
||||||
});
|
|
||||||
|
|
||||||
Cypress.Commands.add('vote_for_proposal', (vote) => {
|
|
||||||
cy.contains('Vote breakdown').should('be.visible', { timeout: 10000 });
|
|
||||||
cy.get(voteButtons).contains(vote).click();
|
|
||||||
cy.contains('Casting vote...').should('be.visible');
|
|
||||||
cy.contains('Casting vote...', txTimeout).should('not.exist');
|
|
||||||
});
|
|
||||||
|
|
||||||
Cypress.Commands.add('wait_for_proposal_sync', () => {
|
|
||||||
// This is a workaround function required because after posting a proposal
|
|
||||||
// and waiting for the ProposalEvent network call to respond there can still be a few seconds
|
|
||||||
// before proposal appears in the list - so rather than hard coded wait - we just wait on the
|
|
||||||
// delegation checks that are performed on the governance page.
|
|
||||||
|
|
||||||
cy.intercept('POST', '/query', (req) => {
|
|
||||||
if (req.body.operationName === 'Delegations') {
|
|
||||||
req.alias = 'proposalDelegationsCompletion';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// waiting for two network calls
|
|
||||||
cy.wait([
|
|
||||||
'@proposalDelegationsCompletion',
|
|
||||||
'@proposalDelegationsCompletion',
|
|
||||||
]);
|
|
||||||
|
|
||||||
// Turn off this intercept from here on in
|
|
||||||
cy.intercept('POST', '/query', (req) => {
|
|
||||||
if (req.body.operationName === 'Delegations') {
|
|
||||||
req.continue();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
Cypress.Commands.add(
|
|
||||||
'navigate_to_page_if_not_allready_loaded',
|
|
||||||
(section) => {
|
|
||||||
cy.url().then((url) => {
|
|
||||||
if (url != `http://localhost:4210/${section}`) {
|
|
||||||
cy.navigate_to(section);
|
|
||||||
cy.wait_for_spinner();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
Cypress.Commands.add(
|
|
||||||
'get_sort_order_of_supplied_array',
|
|
||||||
(suppliedArray) => {
|
|
||||||
const tempArray = [];
|
|
||||||
for (let index = 1; index < suppliedArray.length; index++) {
|
|
||||||
tempArray.push(
|
|
||||||
suppliedArray[index - 1].localeCompare(suppliedArray[index])
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if (tempArray.every((n) => n <= 0)) return 'ascending';
|
|
||||||
else if (tempArray.every((n) => n >= 0)) return 'descending';
|
|
||||||
else return 'unsorted';
|
|
||||||
}
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
170
apps/token-e2e/src/support/governance.functions.js
Normal file
170
apps/token-e2e/src/support/governance.functions.js
Normal file
@ -0,0 +1,170 @@
|
|||||||
|
const newProposalButton = '[data-testid="new-proposal-link"]';
|
||||||
|
const proposalInformationTableRows = '[data-testid="key-value-table-row"]';
|
||||||
|
const newProposalTitle = '[data-testid="proposal-title"]';
|
||||||
|
const newProposalDescription = '[data-testid="proposal-description"]';
|
||||||
|
const proposalResponseProposalIdPath =
|
||||||
|
'response.body.data.busEvents.0.event.id';
|
||||||
|
const voteButtons = '[data-testid="vote-buttons"]';
|
||||||
|
const txTimeout = Cypress.env('txTimeout');
|
||||||
|
const proposalVoteDeadline = '[data-testid="proposal-vote-deadline"]';
|
||||||
|
|
||||||
|
Cypress.Commands.add(
|
||||||
|
'convert_unix_timestamp_to_governance_data_table_date_format',
|
||||||
|
(unixTimestamp, monthTextLength = 'longMonth') => {
|
||||||
|
let dateSupplied = new Date(unixTimestamp * 1000),
|
||||||
|
year = dateSupplied.getFullYear(),
|
||||||
|
months = [
|
||||||
|
'January',
|
||||||
|
'February',
|
||||||
|
'March',
|
||||||
|
'April',
|
||||||
|
'May',
|
||||||
|
'June',
|
||||||
|
'July',
|
||||||
|
'August',
|
||||||
|
'September',
|
||||||
|
'October',
|
||||||
|
'November',
|
||||||
|
'December',
|
||||||
|
],
|
||||||
|
month = months[dateSupplied.getMonth()],
|
||||||
|
shortMonth = months[dateSupplied.getMonth()].substring(0, 3),
|
||||||
|
date = dateSupplied.getDate();
|
||||||
|
|
||||||
|
if (monthTextLength === 'longMonth') return `${date} ${month} ${year}`;
|
||||||
|
else return `${date} ${shortMonth} ${year}`;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
Cypress.Commands.add(
|
||||||
|
'create_ten_digit_unix_timestamp_for_specified_days',
|
||||||
|
(durationDays) => {
|
||||||
|
let today = new Date();
|
||||||
|
let timestamp = today.setDate(today.getDate() + parseInt(durationDays));
|
||||||
|
timestamp = Math.floor(timestamp / 1000);
|
||||||
|
|
||||||
|
return timestamp;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
Cypress.Commands.add('enter_unique_freeform_proposal_body', (timestamp) => {
|
||||||
|
cy.fixture('/proposals/freeform.json').then((freeformProposal) => {
|
||||||
|
freeformProposal.terms.closingTimestamp = timestamp;
|
||||||
|
freeformProposal.rationale.title += timestamp;
|
||||||
|
let proposalPayload = JSON.stringify(freeformProposal);
|
||||||
|
|
||||||
|
cy.get(newProposalTitle).type(freeformProposal.rationale.title);
|
||||||
|
|
||||||
|
cy.get(newProposalDescription).type(proposalPayload, {
|
||||||
|
parseSpecialCharSequences: false,
|
||||||
|
delay: 2,
|
||||||
|
});
|
||||||
|
|
||||||
|
cy.get(proposalVoteDeadline).clear().click().type(timestamp);
|
||||||
|
|
||||||
|
cy.wrap(freeformProposal);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
Cypress.Commands.add('get_network_parameters', () => {
|
||||||
|
let mutation = '{networkParameters {key value}}';
|
||||||
|
cy.request({
|
||||||
|
method: 'POST',
|
||||||
|
url: `http://localhost:3028/query`,
|
||||||
|
body: {
|
||||||
|
query: mutation,
|
||||||
|
},
|
||||||
|
headers: { 'content-type': 'application/json' },
|
||||||
|
})
|
||||||
|
.its(`body.data.networkParameters`)
|
||||||
|
.then(function (response) {
|
||||||
|
let object = response.reduce(function (r, e) {
|
||||||
|
r[e.key] = e.value;
|
||||||
|
return r;
|
||||||
|
}, {});
|
||||||
|
|
||||||
|
return object;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
Cypress.Commands.add('get_submitted_proposal_from_proposal_list', () => {
|
||||||
|
cy.wait('@proposalSubmissionCompletion')
|
||||||
|
.its(proposalResponseProposalIdPath)
|
||||||
|
.then((proposalId) => {
|
||||||
|
return cy.get(`#${proposalId}`);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
Cypress.Commands.add(
|
||||||
|
'get_governance_proposal_date_format_for_specified_days',
|
||||||
|
(days, shortOrLong) => {
|
||||||
|
cy.create_ten_digit_unix_timestamp_for_specified_days(days).then((date) => {
|
||||||
|
cy.convert_unix_timestamp_to_governance_data_table_date_format(
|
||||||
|
date,
|
||||||
|
shortOrLong
|
||||||
|
).then((convertedDate) => {
|
||||||
|
return convertedDate;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
Cypress.Commands.add('get_proposal_information_from_table', (heading) => {
|
||||||
|
cy.get(proposalInformationTableRows).contains(heading).siblings();
|
||||||
|
});
|
||||||
|
|
||||||
|
Cypress.Commands.add('vote_for_proposal', (vote) => {
|
||||||
|
cy.contains('Vote breakdown').should('be.visible', { timeout: 10000 });
|
||||||
|
cy.get(voteButtons).contains(vote).click();
|
||||||
|
cy.contains('Casting vote...').should('be.visible');
|
||||||
|
cy.contains('Casting vote...', txTimeout).should('not.exist');
|
||||||
|
});
|
||||||
|
|
||||||
|
Cypress.Commands.add('wait_for_proposal_sync', () => {
|
||||||
|
// This is a workaround function required because after posting a proposal
|
||||||
|
// and waiting for the ProposalEvent network call to respond there can still be a few seconds
|
||||||
|
// before proposal appears in the list - so rather than hard coded wait - we just wait on the
|
||||||
|
// delegation checks that are performed on the governance page.
|
||||||
|
|
||||||
|
cy.intercept('POST', '/query', (req) => {
|
||||||
|
if (req.body.operationName === 'Delegations') {
|
||||||
|
req.alias = 'proposalDelegationsCompletion';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// waiting for two network calls
|
||||||
|
cy.wait(['@proposalDelegationsCompletion', '@proposalDelegationsCompletion']);
|
||||||
|
|
||||||
|
// Turn off this intercept from here on in
|
||||||
|
cy.intercept('POST', '/query', (req) => {
|
||||||
|
if (req.body.operationName === 'Delegations') {
|
||||||
|
req.continue();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
Cypress.Commands.add('navigate_to_page_if_not_already_loaded', (section) => {
|
||||||
|
cy.url().then((url) => {
|
||||||
|
if (url != `http://localhost:4210/${section}`) {
|
||||||
|
cy.navigate_to(section);
|
||||||
|
cy.wait_for_spinner();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
Cypress.Commands.add('get_sort_order_of_supplied_array', (suppliedArray) => {
|
||||||
|
const tempArray = [];
|
||||||
|
for (let index = 1; index < suppliedArray.length; index++) {
|
||||||
|
tempArray.push(
|
||||||
|
suppliedArray[index - 1].localeCompare(suppliedArray[index])
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (tempArray.every((n) => n <= 0)) return 'ascending';
|
||||||
|
else if (tempArray.every((n) => n >= 0)) return 'descending';
|
||||||
|
else return 'unsorted';
|
||||||
|
});
|
||||||
|
|
||||||
|
Cypress.Commands.add('go_to_make_new_proposal', (proposalType) => {
|
||||||
|
cy.get(newProposalButton).should('be.visible').click();
|
||||||
|
cy.get('a.underline').contains(proposalType).click();
|
||||||
|
});
|
@ -2,6 +2,7 @@ import '@vegaprotocol/cypress';
|
|||||||
|
|
||||||
import './common.functions.js';
|
import './common.functions.js';
|
||||||
import './staking.functions.js';
|
import './staking.functions.js';
|
||||||
|
import './governance.functions.js';
|
||||||
import './wallet-eth.functions.js';
|
import './wallet-eth.functions.js';
|
||||||
import './wallet-teardown.functions.js';
|
import './wallet-teardown.functions.js';
|
||||||
import './wallet-vega.functions.js';
|
import './wallet-vega.functions.js';
|
||||||
|
Loading…
Reference in New Issue
Block a user