test(2704): proposals with market (#2775)
This commit is contained in:
parent
3ee0eee80d
commit
1861852852
@ -16,4 +16,16 @@ NX_VEGA_DOCS_URL=https://docs.vega.xyz/mainnet
|
|||||||
#Test configuration variables
|
#Test configuration variables
|
||||||
CYPRESS_FAIRGROUND=false
|
CYPRESS_FAIRGROUND=false
|
||||||
CYPRESS_VEGA_URL=http://localhost:3028/query
|
CYPRESS_VEGA_URL=http://localhost:3028/query
|
||||||
CYPRESS_VEGA_WALLET_API_TOKEN=
|
CYPRESS_VEGA_WALLET_API_TOKEN=jpeAkxcffzTLCzBX2m5TZIp3hF500YZhHwESwNKOGksdGPXeeIznXypaDfpNe2M9
|
||||||
|
CYPRESS_ETH_WALLET_MNEMONIC=ozone access unlock valid olympic save include omit supply green clown session
|
||||||
|
CYPRESS_ETHEREUM_PROVIDER_URL=http://localhost:8545
|
||||||
|
CYPRESS_EXPLORER_URL=https://explorer.fairground.wtf
|
||||||
|
CYPRESS_FAUCET_URL=http://localhost:1790/api/v1/mint
|
||||||
|
CYPRESS_TRUNCATED_VEGA_PUBLIC_KEY=02ecea…342f65
|
||||||
|
CYPRESS_TRUNCATED_VEGA_PUBLIC_KEY2=7f9cf0…c25535
|
||||||
|
CYPRESS_VEGA_ENV=CUSTOM
|
||||||
|
CYPRESS_VEGA_PUBLIC_KEY=02eceaba4df2bef76ea10caf728d8a099a2aa846cced25737cccaa9812342f65
|
||||||
|
CYPRESS_VEGA_PUBLIC_KEY2=7f9cf07d3a9905b1a61a1069f7a758855da428bc0f4a97de87f48644bfc25535
|
||||||
|
CYPRESS_VEGA_TOKEN_URL=https://token.fairground.wtf
|
||||||
|
CYPRESS_VEGA_URL=http://localhost:3028/query
|
||||||
|
CYPRESS_VEGA_WALLET_URL=http://localhost:1789
|
||||||
|
@ -2,56 +2,59 @@
|
|||||||
"changes": {
|
"changes": {
|
||||||
"decimalPlaces": "5",
|
"decimalPlaces": "5",
|
||||||
"positionDecimalPlaces": "5",
|
"positionDecimalPlaces": "5",
|
||||||
|
"lpPriceRange": "10",
|
||||||
"instrument": {
|
"instrument": {
|
||||||
"name": "Oranges Daily",
|
"name": "Token test market",
|
||||||
"code": "ORANGES.24h",
|
"code": "Token.24h",
|
||||||
"future": {
|
"future": {
|
||||||
"settlementAsset": "8b52d4a3a4b0ffe733cddbc2b67be273816cfeb6ca4c8b339bac03ffba08e4e4",
|
"settlementAsset": "fBTC",
|
||||||
"quoteName": "tEuro",
|
"quoteName": "fBTC",
|
||||||
"settlementDataDecimals": 5,
|
|
||||||
"dataSourceSpecForSettlementData": {
|
"dataSourceSpecForSettlementData": {
|
||||||
"signers": [
|
"external": {
|
||||||
{
|
"oracle": {
|
||||||
"signer": {
|
"signers": [
|
||||||
"__typename": "ETHAddress",
|
|
||||||
"address": "0xfCEAdAFab14d46e20144F48824d0C09B1a03F2BC"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"filters": [
|
|
||||||
{
|
|
||||||
"key": {
|
|
||||||
"name": "prices.BTC.value",
|
|
||||||
"type": "TYPE_INTEGER"
|
|
||||||
},
|
|
||||||
"conditions": [
|
|
||||||
{
|
{
|
||||||
"operator": "OPERATOR_GREATER_THAN",
|
"pubKey": {
|
||||||
"value": "0"
|
"key": "70d14a321e02e71992fd115563df765000ccc4775cbe71a0e2f9ff5a3b9dc680"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"filters": [
|
||||||
|
{
|
||||||
|
"key": {
|
||||||
|
"name": "prices.ETH.value",
|
||||||
|
"type": "TYPE_INTEGER",
|
||||||
|
"numberDecimalPlaces": "0"
|
||||||
|
},
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"operator": "OPERATOR_GREATER_THAN",
|
||||||
|
"value": "0"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
}
|
||||||
},
|
},
|
||||||
"dataSourceSpecForTradingTermination": {
|
"dataSourceSpecForTradingTermination": {
|
||||||
"signers": [
|
"signers": [
|
||||||
{
|
{
|
||||||
"signer": {
|
"pubKey": {
|
||||||
"__typename": "ETHAddress",
|
"key": "70d14a321e02e71992fd115563df765000ccc4775cbe71a0e2f9ff5a3b9dc680"
|
||||||
"address": "0xfCEAdAFab14d46e20144F48824d0C09B1a03F2BC"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"filters": [
|
"filters": [
|
||||||
{
|
{
|
||||||
"key": {
|
"key": {
|
||||||
"name": "vegaprotocol.builtin.timestamp",
|
"name": "trading.terminated.ETH5",
|
||||||
"type": "TYPE_TIMESTAMP"
|
"type": "TYPE_BOOLEAN"
|
||||||
},
|
},
|
||||||
"conditions": [
|
"conditions": [
|
||||||
{
|
{
|
||||||
"operator": "OPERATOR_GREATER_THAN_OR_EQUAL",
|
"operator": "OPERATOR_EQUALS",
|
||||||
"value": "1648684800000000000"
|
"value": "true"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -59,7 +62,7 @@
|
|||||||
},
|
},
|
||||||
"dataSourceSpecBinding": {
|
"dataSourceSpecBinding": {
|
||||||
"settlementPriceProperty": "prices.BTC.value",
|
"settlementPriceProperty": "prices.BTC.value",
|
||||||
"tradingTerminationProperty": "vegaprotocol.builtin.timestamp"
|
"tradingTerminationProperty": "trading.terminated.ETH5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -1,83 +1,78 @@
|
|||||||
{
|
{
|
||||||
"marketId": "315a8e48db0a292c92b617264728048c82c20efc922c75fd292fc54e5c727c81",
|
"instrument": {
|
||||||
"changes": {
|
"code": "TEST.24h",
|
||||||
"instrument": {
|
"future": {
|
||||||
"code": "ORANGES.24h",
|
"quoteName": "fUSDC",
|
||||||
"future": {
|
"settlementDataDecimals": 5,
|
||||||
"quoteName": "tEuro",
|
"dataSourceSpecForSettlementData": {
|
||||||
"settlementDataDecimals": 5,
|
"signers": [
|
||||||
"dataSourceSpecForSettlementData": {
|
{
|
||||||
"signers": [
|
"pubKey": {
|
||||||
{
|
"key": "70d14a321e02e71992fd115563df765000ccc4775cbe71a0e2f9ff5a3b9dc680"
|
||||||
"signer": {
|
}
|
||||||
"__typename": "ETHAddress",
|
}
|
||||||
"address": "0xfCEAdAFab14d46e20144F48824d0C09B1a03F2BC"
|
],
|
||||||
|
"filters": [
|
||||||
|
{
|
||||||
|
"key": {
|
||||||
|
"name": "prices.ETH.value",
|
||||||
|
"type": "TYPE_INTEGER"
|
||||||
|
},
|
||||||
|
"conditions": [
|
||||||
|
{
|
||||||
|
"operator": "OPERATOR_GREATER_THAN",
|
||||||
|
"value": "0"
|
||||||
}
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"dataSourceSpecForTradingTermination": {
|
||||||
|
"signers": [
|
||||||
|
{
|
||||||
|
"pubKey": {
|
||||||
|
"key": "70d14a321e02e71992fd115563df765000ccc4775cbe71a0e2f9ff5a3b9dc680"
|
||||||
}
|
}
|
||||||
],
|
}
|
||||||
"filters": [
|
],
|
||||||
{
|
"filters": [
|
||||||
"key": {
|
{
|
||||||
"name": "prices.BTC.value",
|
"key": {
|
||||||
"type": "TYPE_INTEGER"
|
"name": "trading.terminated.ETH5",
|
||||||
},
|
"type": "TYPE_BOOLEAN"
|
||||||
"conditions": [
|
},
|
||||||
{
|
"conditions": [
|
||||||
"operator": "OPERATOR_GREATER_THAN",
|
{
|
||||||
"value": "0"
|
"operator": "OPERATOR_GREATER_THAN_OR_EQUAL",
|
||||||
}
|
"value": "1648684800000000000"
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"dataSourceSpecForTradingTermination": {
|
|
||||||
"signers": [
|
|
||||||
{
|
|
||||||
"signer": {
|
|
||||||
"__typename": "ETHAddress",
|
|
||||||
"address": "0xfCEAdAFab14d46e20144F48824d0C09B1a03F2BC"
|
|
||||||
}
|
}
|
||||||
}
|
]
|
||||||
],
|
}
|
||||||
"filters": [
|
]
|
||||||
{
|
},
|
||||||
"key": {
|
"dataSourceSpecBinding": {
|
||||||
"name": "vegaprotocol.builtin.timestamp",
|
"settlementPriceProperty": "prices.ETH.value",
|
||||||
"type": "TYPE_TIMESTAMP"
|
"tradingTerminationProperty": "trading.terminated.ETH5"
|
||||||
},
|
|
||||||
"conditions": [
|
|
||||||
{
|
|
||||||
"operator": "OPERATOR_GREATER_THAN_OR_EQUAL",
|
|
||||||
"value": "1648684800000000000"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"dataSourceSpecBinding": {
|
|
||||||
"settlementPriceProperty": "prices.BTC.value",
|
|
||||||
"tradingTerminationProperty": "vegaprotocol.builtin.timestamp"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
"metadata": ["sector:energy", "sector:food", "source:docs.vega.xyz"],
|
},
|
||||||
"priceMonitoringParameters": {
|
"metadata": ["sector:energy", "sector:food", "source:docs.vega.xyz"],
|
||||||
"triggers": [
|
"priceMonitoringParameters": {
|
||||||
{
|
"triggers": [
|
||||||
"horizon": "43200",
|
{
|
||||||
"probability": "0.9999999",
|
"horizon": "43200",
|
||||||
"auctionExtension": "600"
|
"probability": "0.9999999",
|
||||||
}
|
"auctionExtension": "600"
|
||||||
]
|
|
||||||
},
|
|
||||||
"logNormal": {
|
|
||||||
"tau": 0.0001140771161,
|
|
||||||
"riskAversionParameter": 0.001,
|
|
||||||
"params": {
|
|
||||||
"mu": 0,
|
|
||||||
"r": 0.016,
|
|
||||||
"sigma": 0.3
|
|
||||||
}
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"logNormal": {
|
||||||
|
"tau": 0.0001140771161,
|
||||||
|
"riskAversionParameter": 0.001,
|
||||||
|
"params": {
|
||||||
|
"mu": 0,
|
||||||
|
"r": 0.016,
|
||||||
|
"sigma": 0.3
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1 +1 @@
|
|||||||
123
|
0123245
|
||||||
|
@ -11,6 +11,7 @@ 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 openProposals = '[data-testid="open-proposals"]';
|
const openProposals = '[data-testid="open-proposals"]';
|
||||||
|
const closedProposals = '[data-testid="closed-proposals"]';
|
||||||
const proposalVoteProgressForPercentage =
|
const proposalVoteProgressForPercentage =
|
||||||
'[data-testid="vote-progress-indicator-percentage-for"]';
|
'[data-testid="vote-progress-indicator-percentage-for"]';
|
||||||
const proposalVoteProgressAgainstPercentage =
|
const proposalVoteProgressAgainstPercentage =
|
||||||
@ -22,7 +23,9 @@ 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 proposalStatus = '[data-testid="proposal-status"]';
|
||||||
const rawProposalData = '[data-testid="proposal-data"]';
|
const rawProposalData = '[data-testid="proposal-data"]';
|
||||||
|
const votesTable = '[data-testid="votes-table"]';
|
||||||
const minVoteButton = '[data-testid="min-vote"]';
|
const minVoteButton = '[data-testid="min-vote"]';
|
||||||
const maxVoteButton = '[data-testid="max-vote"]';
|
const maxVoteButton = '[data-testid="max-vote"]';
|
||||||
const voteButtons = '[data-testid="vote-buttons"]';
|
const voteButtons = '[data-testid="vote-buttons"]';
|
||||||
@ -37,6 +40,10 @@ const txTimeout = Cypress.env('txTimeout');
|
|||||||
const epochTimeout = Cypress.env('epochTimeout');
|
const epochTimeout = Cypress.env('epochTimeout');
|
||||||
const proposalTimeout = { timeout: 14000 };
|
const proposalTimeout = { timeout: 14000 };
|
||||||
|
|
||||||
|
const minCloseDays = 2;
|
||||||
|
const maxCloseDays = 3;
|
||||||
|
const requiredParticipation = 0.001;
|
||||||
|
|
||||||
const governanceProposalType = {
|
const governanceProposalType = {
|
||||||
NETWORK_PARAMETER: 'Network parameter',
|
NETWORK_PARAMETER: 'Network parameter',
|
||||||
NEW_MARKET: 'New market',
|
NEW_MARKET: 'New market',
|
||||||
@ -65,21 +72,6 @@ context(
|
|||||||
network_parameters['governance.proposal.freeform.requiredMajority'] *
|
network_parameters['governance.proposal.freeform.requiredMajority'] *
|
||||||
100
|
100
|
||||||
).as('requiredMajority');
|
).as('requiredMajority');
|
||||||
cy.wrap(
|
|
||||||
network_parameters[
|
|
||||||
'governance.proposal.freeform.requiredParticipation'
|
|
||||||
] * 100
|
|
||||||
).as('requiredParticipation');
|
|
||||||
cy.wrap(
|
|
||||||
network_parameters['governance.proposal.freeform.minClose'].split(
|
|
||||||
'h'
|
|
||||||
)[0] / 24
|
|
||||||
).as('minCloseDays');
|
|
||||||
cy.wrap(
|
|
||||||
network_parameters['governance.proposal.freeform.maxClose'].split(
|
|
||||||
'h'
|
|
||||||
)[0] / 24
|
|
||||||
).as('maxCloseDays');
|
|
||||||
cy.wrap(
|
cy.wrap(
|
||||||
network_parameters['governance.proposal.freeform.minClose'].split(
|
network_parameters['governance.proposal.freeform.minClose'].split(
|
||||||
'h'
|
'h'
|
||||||
@ -108,21 +100,6 @@ context(
|
|||||||
0.00001,
|
0.00001,
|
||||||
'Asserting that value is at least 0.00001 for network parameter minVoterBalance'
|
'Asserting that value is at least 0.00001 for network parameter minVoterBalance'
|
||||||
);
|
);
|
||||||
assert.isAtLeast(
|
|
||||||
parseFloat(this.requiredParticipation),
|
|
||||||
0.00001,
|
|
||||||
'Asserting that value is at least 0.00001 for network parameter requiredParticipation'
|
|
||||||
);
|
|
||||||
assert.isAtLeast(
|
|
||||||
parseInt(this.minCloseDays),
|
|
||||||
1,
|
|
||||||
'Asserting that value is at least 1 for network parameter minCloseDays'
|
|
||||||
);
|
|
||||||
assert.isAtLeast(
|
|
||||||
parseInt(this.maxCloseDays),
|
|
||||||
parseInt(this.minCloseDays + 1),
|
|
||||||
'Asserting that network parameter maxCloseDays is at least 1 day higher than minCloseDays'
|
|
||||||
);
|
|
||||||
// workaround for first eth tx hanging
|
// workaround for first eth tx hanging
|
||||||
associateTokenStartOfTests();
|
associateTokenStartOfTests();
|
||||||
}
|
}
|
||||||
@ -182,10 +159,10 @@ context(
|
|||||||
this.minProposerBalance
|
this.minProposerBalance
|
||||||
);
|
);
|
||||||
let proposalDays = [
|
let proposalDays = [
|
||||||
this.minCloseDays + 1,
|
minCloseDays + 1,
|
||||||
this.maxCloseDays,
|
maxCloseDays,
|
||||||
this.minCloseDays + 3,
|
minCloseDays + 3,
|
||||||
this.minCloseDays + 2,
|
minCloseDays + 2,
|
||||||
];
|
];
|
||||||
for (var index = 0; index < proposalDays.length; index++) {
|
for (var index = 0; index < proposalDays.length; index++) {
|
||||||
cy.go_to_make_new_proposal(governanceProposalType.RAW);
|
cy.go_to_make_new_proposal(governanceProposalType.RAW);
|
||||||
@ -227,6 +204,7 @@ context(
|
|||||||
cy.navigate_to('validators');
|
cy.navigate_to('validators');
|
||||||
cy.click_on_validator_from_list(0);
|
cy.click_on_validator_from_list(0);
|
||||||
cy.staking_validator_page_add_stake('2');
|
cy.staking_validator_page_add_stake('2');
|
||||||
|
cy.close_staking_dialog();
|
||||||
|
|
||||||
cy.get(vegaWalletStakedBalances, txTimeout).should('contain', '2');
|
cy.get(vegaWalletStakedBalances, txTimeout).should('contain', '2');
|
||||||
|
|
||||||
@ -297,10 +275,12 @@ context(
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// Skipping test due to bug: #1320
|
// 3001-VOTE-071
|
||||||
it.skip('Newly created freeform proposals list - shows proposal participation - both met and not', function () {
|
it('Newly created freeform proposals list - shows proposal participation - both met and not', function () {
|
||||||
createFreeformProposal(this.minProposerBalance);
|
const proposalTitle = generateProposalTitle();
|
||||||
cy.get_submitted_proposal_from_proposal_list()
|
createFreeformProposal(this.minProposerBalance, proposalTitle);
|
||||||
|
|
||||||
|
cy.get_submitted_proposal_from_proposal_list(proposalTitle)
|
||||||
.as('submittedProposal')
|
.as('submittedProposal')
|
||||||
.within(() => {
|
.within(() => {
|
||||||
// 3001-VOTE-039
|
// 3001-VOTE-039
|
||||||
@ -312,7 +292,7 @@ context(
|
|||||||
.invoke('text')
|
.invoke('text')
|
||||||
.then((totalSupply) => {
|
.then((totalSupply) => {
|
||||||
let tokensRequiredToAchieveResult = parseFloat(
|
let tokensRequiredToAchieveResult = parseFloat(
|
||||||
(totalSupply.replace(/,/g, '') * this.requiredParticipation) / 100
|
(totalSupply.replace(/,/g, '') * requiredParticipation) / 100
|
||||||
).toFixed(2);
|
).toFixed(2);
|
||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
tokensRequiredToAchieveResult
|
tokensRequiredToAchieveResult
|
||||||
@ -321,16 +301,17 @@ context(
|
|||||||
cy.get('@submittedProposal').within(() =>
|
cy.get('@submittedProposal').within(() =>
|
||||||
cy.get(viewProposalButton).click()
|
cy.get(viewProposalButton).click()
|
||||||
);
|
);
|
||||||
cy.get_proposal_information_from_table('Participation met')
|
cy.get_proposal_information_from_table('Token participation met')
|
||||||
.contains('👍')
|
.contains('👍')
|
||||||
.should('be.visible');
|
.should('be.visible');
|
||||||
cy.navigate_to('proposals');
|
cy.navigate_to('proposals');
|
||||||
cy.get('@submittedProposal').within(() =>
|
cy.get('@submittedProposal').within(() =>
|
||||||
cy.get(voteStatus).should('have.text', 'Participation met')
|
cy.get(voteStatus).should('have.text', 'Set to pass')
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 3001-VOTE-055
|
||||||
it('Newly created raw proposal details - shows proposal title and full description', function () {
|
it('Newly created raw proposal details - shows proposal title and full description', function () {
|
||||||
createRawProposal(this.minProposerBalance);
|
createRawProposal(this.minProposerBalance);
|
||||||
cy.get('@rawProposal').then((rawProposal) => {
|
cy.get('@rawProposal').then((rawProposal) => {
|
||||||
@ -357,6 +338,7 @@ context(
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 3001-VOTE-043
|
||||||
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';
|
const closingVoteHrs = '72';
|
||||||
const proposalTitle = generateProposalTitle();
|
const proposalTitle = generateProposalTitle();
|
||||||
@ -399,6 +381,7 @@ context(
|
|||||||
it('Newly created proposal details - shows default status set to fail', function () {
|
it('Newly created proposal details - shows default status set to fail', function () {
|
||||||
// 3001-VOTE-037
|
// 3001-VOTE-037
|
||||||
// 3001-VOTE-040
|
// 3001-VOTE-040
|
||||||
|
// 3001-VOTE-067
|
||||||
createRawProposal(this.minProposerBalance);
|
createRawProposal(this.minProposerBalance);
|
||||||
cy.get('@rawProposal').then((rawProposal) => {
|
cy.get('@rawProposal').then((rawProposal) => {
|
||||||
cy.get_submitted_proposal_from_proposal_list(
|
cy.get_submitted_proposal_from_proposal_list(
|
||||||
@ -413,15 +396,17 @@ context(
|
|||||||
.should('be.visible');
|
.should('be.visible');
|
||||||
// 3001-VOTE-062
|
// 3001-VOTE-062
|
||||||
// 3001-VOTE-040
|
// 3001-VOTE-040
|
||||||
|
// 3001-VOTE-070
|
||||||
cy.get_proposal_information_from_table('Token majority met')
|
cy.get_proposal_information_from_table('Token majority met')
|
||||||
.contains('👎')
|
.contains('👎')
|
||||||
.should('be.visible');
|
.should('be.visible');
|
||||||
|
// 3001-VOTE-068
|
||||||
cy.get_proposal_information_from_table('Token participation met')
|
cy.get_proposal_information_from_table('Token participation met')
|
||||||
.contains('👎')
|
.contains('👎')
|
||||||
.should('be.visible');
|
.should('be.visible');
|
||||||
});
|
});
|
||||||
|
|
||||||
// 3001-VOTE-080 3001-VOTE-090
|
// 3001-VOTE-080 3001-VOTE-090 3001-VOTE-069 3001-VOTE-072 3001-VOTE-073
|
||||||
it('Newly created proposal details - ability to vote for and against proposal - with minimum required tokens associated', function () {
|
it('Newly created proposal details - ability to vote for and against proposal - with minimum required tokens associated', function () {
|
||||||
createRawProposal(this.minProposerBalance);
|
createRawProposal(this.minProposerBalance);
|
||||||
cy.get('@rawProposal').then((rawProposal) => {
|
cy.get('@rawProposal').then((rawProposal) => {
|
||||||
@ -446,7 +431,7 @@ context(
|
|||||||
.contains(votedDate)
|
.contains(votedDate)
|
||||||
.should('be.visible');
|
.should('be.visible');
|
||||||
});
|
});
|
||||||
cy.get(proposalVoteProgressForPercentage)
|
cy.get(proposalVoteProgressForPercentage) // 3001-VOTE-072
|
||||||
.contains('100.00%')
|
.contains('100.00%')
|
||||||
.and('be.visible');
|
.and('be.visible');
|
||||||
cy.get(proposalVoteProgressAgainstPercentage)
|
cy.get(proposalVoteProgressAgainstPercentage)
|
||||||
@ -466,10 +451,10 @@ context(
|
|||||||
.and('be.visible');
|
.and('be.visible');
|
||||||
// 3001-VOTE-061
|
// 3001-VOTE-061
|
||||||
cy.get_proposal_information_from_table('Participation required')
|
cy.get_proposal_information_from_table('Participation required')
|
||||||
.contains(`${this.requiredParticipation}%`)
|
.contains(`${requiredParticipation}%`)
|
||||||
.should('be.visible');
|
.should('be.visible');
|
||||||
// 3001-VOTE-066
|
// 3001-VOTE-066
|
||||||
cy.get_proposal_information_from_table('Majority Required')
|
cy.get_proposal_information_from_table('Majority Required') // 3001-VOTE-073
|
||||||
.contains(`${parseFloat(this.requiredMajority).toFixed(2)}%`)
|
.contains(`${parseFloat(this.requiredMajority).toFixed(2)}%`)
|
||||||
.should('be.visible');
|
.should('be.visible');
|
||||||
cy.get_proposal_information_from_table('Number of voting parties')
|
cy.get_proposal_information_from_table('Number of voting parties')
|
||||||
@ -512,7 +497,7 @@ context(
|
|||||||
.invoke('text')
|
.invoke('text')
|
||||||
.then((totalSupply) => {
|
.then((totalSupply) => {
|
||||||
let tokensRequiredToAchieveResult = parseFloat(
|
let tokensRequiredToAchieveResult = parseFloat(
|
||||||
(totalSupply.replace(/,/g, '') * this.requiredParticipation) / 100
|
(totalSupply.replace(/,/g, '') * requiredParticipation) / 100
|
||||||
).toFixed(2);
|
).toFixed(2);
|
||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
tokensRequiredToAchieveResult
|
tokensRequiredToAchieveResult
|
||||||
@ -536,6 +521,11 @@ context(
|
|||||||
cy.get(proposalVoteProgressAgainstTokens)
|
cy.get(proposalVoteProgressAgainstTokens)
|
||||||
.contains('0.00')
|
.contains('0.00')
|
||||||
.and('be.visible');
|
.and('be.visible');
|
||||||
|
cy.get_proposal_information_from_table(
|
||||||
|
'Total tokens voted percentage'
|
||||||
|
)
|
||||||
|
.should('have.text', '0.00%')
|
||||||
|
.and('be.visible');
|
||||||
cy.get_proposal_information_from_table('Tokens for proposal')
|
cy.get_proposal_information_from_table('Tokens for proposal')
|
||||||
.should('have.text', tokensRequiredToAchieveResult)
|
.should('have.text', tokensRequiredToAchieveResult)
|
||||||
.and('be.visible');
|
.and('be.visible');
|
||||||
@ -588,6 +578,7 @@ context(
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 3001-VOTE-006
|
||||||
it('Creating a proposal - proposal rejected - able to access rejected proposals', function () {
|
it('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
|
||||||
@ -649,6 +640,7 @@ context(
|
|||||||
cy.get(dialogCloseButton).click();
|
cy.get(dialogCloseButton).click();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 3002-PROP-009
|
||||||
it('Unable to create a proposal - when some but not enough tokens are associated', function () {
|
it('Unable to create a proposal - when some but not enough tokens are associated', function () {
|
||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
this.minProposerBalance - 0.000001
|
this.minProposerBalance - 0.000001
|
||||||
@ -669,7 +661,7 @@ context(
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('Unable to create a freeform proposal - when json parent section contains unexpected field', function () {
|
it('Unable to create a freeform proposal - when json parent section contains unexpected field', function () {
|
||||||
// 3001-VOTE-038
|
// 3001-VOTE-038 3002-PROP-013 3002-PROP-014
|
||||||
cy.ensure_specified_unstaked_tokens_are_associated(
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
this.minProposerBalance
|
this.minProposerBalance
|
||||||
);
|
);
|
||||||
@ -695,6 +687,9 @@ context(
|
|||||||
'Invalid params: the transaction is malformed'
|
'Invalid params: the transaction is malformed'
|
||||||
);
|
);
|
||||||
cy.get(dialogCloseButton).click();
|
cy.get(dialogCloseButton).click();
|
||||||
|
cy.get(rawProposalData)
|
||||||
|
.invoke('val')
|
||||||
|
.should('contain', "i shouldn't be here");
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Unable to create a freeform proposal - when json terms section contains unexpected field', function () {
|
it('Unable to create a freeform proposal - when json terms section contains unexpected field', function () {
|
||||||
@ -792,6 +787,107 @@ context(
|
|||||||
cy.contains('You voted: Against').should('be.visible');
|
cy.contains('You voted: Against').should('be.visible');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 3001-VOTE-006
|
||||||
|
it('Able to view enacted proposal', function () {
|
||||||
|
cy.createMarket();
|
||||||
|
cy.reload();
|
||||||
|
cy.wait_for_spinner();
|
||||||
|
cy.get(closedProposals).within(() => {
|
||||||
|
cy.get(proposalDetailsTitle).should(
|
||||||
|
'have.text',
|
||||||
|
'Add Lorem Ipsum market'
|
||||||
|
);
|
||||||
|
cy.get(proposalStatus).should('have.text', 'Enacted ');
|
||||||
|
cy.get(viewProposalButton).click();
|
||||||
|
});
|
||||||
|
cy.getByTestId('proposal-type').should('have.text', 'New market');
|
||||||
|
cy.get_proposal_information_from_table('State')
|
||||||
|
.contains('Enacted')
|
||||||
|
.and('be.visible');
|
||||||
|
cy.get(votesTable).within(() => {
|
||||||
|
cy.contains('Vote passed.').should('be.visible');
|
||||||
|
cy.contains('Voting has ended.').should('be.visible');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// 3001-VOTE-047
|
||||||
|
it('Able to enact freeform proposal', function () {
|
||||||
|
const proposalTitle = 'Add New free form proposal with short enactment';
|
||||||
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
|
this.minProposerBalance
|
||||||
|
);
|
||||||
|
cy.sendWalletTxFreeFormProposal();
|
||||||
|
cy.navigate_to('proposals');
|
||||||
|
cy.reload();
|
||||||
|
cy.wait_for_spinner();
|
||||||
|
cy.contains(proposalTitle)
|
||||||
|
.parentsUntil('[data-testid="proposals-list-item"]')
|
||||||
|
.within(() => cy.get(viewProposalButton).click());
|
||||||
|
cy.get_proposal_information_from_table('State')
|
||||||
|
.contains('Open')
|
||||||
|
.and('be.visible');
|
||||||
|
cy.vote_for_proposal('for');
|
||||||
|
cy.get_proposal_information_from_table('State')
|
||||||
|
.contains('Enacted', epochTimeout)
|
||||||
|
.and('be.visible');
|
||||||
|
});
|
||||||
|
|
||||||
|
// 3001-VOTE-046 3001-VOTE-044 3001-VOTE-074 3001-VOTE-074
|
||||||
|
it('Able to enact proposal by voting', function () {
|
||||||
|
const proposalTitle = 'Add New proposal with short enactment';
|
||||||
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
|
this.minProposerBalance
|
||||||
|
);
|
||||||
|
cy.sendWalletTxUpdateNetworkProposal();
|
||||||
|
cy.navigate_to('proposals');
|
||||||
|
cy.reload();
|
||||||
|
cy.wait_for_spinner();
|
||||||
|
cy.contains(proposalTitle)
|
||||||
|
.parentsUntil('[data-testid="proposals-list-item"]')
|
||||||
|
.within(() => cy.get(viewProposalButton).click());
|
||||||
|
cy.get_proposal_information_from_table('State')
|
||||||
|
.contains('Open')
|
||||||
|
.and('be.visible');
|
||||||
|
cy.vote_for_proposal('for');
|
||||||
|
cy.get_proposal_information_from_table('State') // 3001-VOTE-047
|
||||||
|
.contains('Passed', txTimeout)
|
||||||
|
.and('be.visible');
|
||||||
|
cy.get_proposal_information_from_table('State')
|
||||||
|
.contains('Enacted', epochTimeout)
|
||||||
|
.and('be.visible');
|
||||||
|
cy.get(votesTable).within(() => {
|
||||||
|
cy.contains('Vote passed.').should('be.visible');
|
||||||
|
cy.contains('Voting has ended.').should('be.visible');
|
||||||
|
});
|
||||||
|
cy.get(proposalVoteProgressForPercentage)
|
||||||
|
.contains('100.00%')
|
||||||
|
.and('be.visible');
|
||||||
|
});
|
||||||
|
|
||||||
|
// 3001-VOTE-048 3001-VOTE-049
|
||||||
|
it('Able to fail proposal due to lack of participation', function () {
|
||||||
|
const proposalTitle = 'Add New free form proposal with short enactment';
|
||||||
|
cy.ensure_specified_unstaked_tokens_are_associated(
|
||||||
|
this.minProposerBalance
|
||||||
|
);
|
||||||
|
cy.sendWalletTxFreeFormProposal();
|
||||||
|
cy.navigate_to('proposals');
|
||||||
|
cy.reload();
|
||||||
|
cy.wait_for_spinner();
|
||||||
|
cy.contains(proposalTitle)
|
||||||
|
.parentsUntil('[data-testid="proposals-list-item"]')
|
||||||
|
.within(() => cy.get(viewProposalButton).click());
|
||||||
|
cy.get_proposal_information_from_table('State')
|
||||||
|
.contains('Open')
|
||||||
|
.and('be.visible');
|
||||||
|
cy.get_proposal_information_from_table('State') // 3001-VOTE-047
|
||||||
|
.contains('Declined', txTimeout)
|
||||||
|
.and('be.visible');
|
||||||
|
cy.get_proposal_information_from_table('Rejection reason')
|
||||||
|
.contains('PROPOSAL_ERROR_PARTICIPATION_THRESHOLD_NOT_REACHED')
|
||||||
|
.and('be.visible');
|
||||||
|
});
|
||||||
|
|
||||||
function createRawProposal(proposerBalance) {
|
function createRawProposal(proposerBalance) {
|
||||||
if (proposerBalance)
|
if (proposerBalance)
|
||||||
cy.ensure_specified_unstaked_tokens_are_associated(proposerBalance);
|
cy.ensure_specified_unstaked_tokens_are_associated(proposerBalance);
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
const proposalListItem = '[data-testid="proposals-list-item"]';
|
||||||
|
const openProposals = '[data-testid="open-proposals"]';
|
||||||
|
const proposalType = '[data-testid="proposal-type"]';
|
||||||
|
const proposalDetails = '[data-testid="proposal-details"]';
|
||||||
const newProposalSubmitButton = '[data-testid="proposal-submit"]';
|
const newProposalSubmitButton = '[data-testid="proposal-submit"]';
|
||||||
const proposalVoteDeadline = '[data-testid="proposal-vote-deadline"]';
|
const proposalVoteDeadline = '[data-testid="proposal-vote-deadline"]';
|
||||||
const proposalValidationDeadline =
|
const proposalValidationDeadline =
|
||||||
@ -209,18 +213,15 @@ context(
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
// skipped because no markets available to select in capsule
|
|
||||||
it.skip('Able to submit update market proposal', function () {
|
it.skip('Able to submit update market proposal', function () {
|
||||||
const marketId =
|
|
||||||
'315a8e48db0a292c92b617264728048c82c20efc922c75fd292fc54e5c727c81';
|
|
||||||
cy.go_to_make_new_proposal(governanceProposalType.UPDATE_MARKET);
|
cy.go_to_make_new_proposal(governanceProposalType.UPDATE_MARKET);
|
||||||
cy.get(newProposalTitle).type('Test update asset proposal');
|
cy.get(newProposalTitle).type('Test update market proposal');
|
||||||
cy.get(newProposalDescription).type('E2E test for proposals');
|
cy.get(newProposalDescription).type('E2E test for proposals');
|
||||||
cy.get(proposalMarketSelect).select(marketId);
|
cy.get(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', 'Oranges Daily');
|
cy.get('dd').eq(0).should('have.text', 'Test market 1');
|
||||||
cy.get('dd').eq(1).should('have.text', 'ORANGES.24h');
|
cy.get('dd').eq(1).should('have.text', 'TEST.24h');
|
||||||
cy.get('dd').eq(2).should('have.text', marketId);
|
cy.get('dd').eq(2).should('not.be.empty');
|
||||||
});
|
});
|
||||||
cy.fixture('/proposals/update-market').then((updateMarketProposal) => {
|
cy.fixture('/proposals/update-market').then((updateMarketProposal) => {
|
||||||
let newUpdateMarketProposal = JSON.stringify(updateMarketProposal);
|
let newUpdateMarketProposal = JSON.stringify(updateMarketProposal);
|
||||||
@ -281,12 +282,28 @@ context(
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('Able to submit update asset proposal using min deadline', function () {
|
it('Able to submit update asset proposal using min deadline', function () {
|
||||||
|
const assetId =
|
||||||
|
'ebcd94151ae1f0d39a4bde3b21a9c7ae81a80ea4352fb075a92e07608d9c953d';
|
||||||
|
|
||||||
cy.go_to_make_new_proposal(governanceProposalType.UPDATE_ASSET);
|
cy.go_to_make_new_proposal(governanceProposalType.UPDATE_ASSET);
|
||||||
enterUpdateAssetProposalDetails();
|
enterUpdateAssetProposalDetails();
|
||||||
cy.get(minVoteDeadline).click();
|
cy.get(minVoteDeadline).click();
|
||||||
cy.get(minEnactDeadline).click();
|
cy.get(minEnactDeadline).click();
|
||||||
cy.get(newProposalSubmitButton).should('be.visible').click();
|
cy.get(newProposalSubmitButton).should('be.visible').click();
|
||||||
cy.wait_for_proposal_submitted();
|
cy.wait_for_proposal_submitted();
|
||||||
|
cy.navigate_to('proposals');
|
||||||
|
cy.get(openProposals).within(() => {
|
||||||
|
cy.get(proposalType)
|
||||||
|
.contains('Update asset')
|
||||||
|
.parentsUntil(proposalListItem)
|
||||||
|
.within(() => {
|
||||||
|
cy.get(proposalDetails).should('contain.text', assetId); // 3001-VOTE-029
|
||||||
|
cy.getByTestId('view-proposal-btn').click();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
cy.get_proposal_information_from_table('Proposed enactment') // 3001-VOTE-044
|
||||||
|
.invoke('text')
|
||||||
|
.should('not.be.empty');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Able to submit update asset proposal using max deadline', function () {
|
it('Able to submit update asset proposal using max deadline', function () {
|
||||||
|
@ -20,7 +20,10 @@ context('View functionality with public key', { tags: '@smoke' }, function () {
|
|||||||
|
|
||||||
it('Able to connect public key via wallet', function () {
|
it('Able to connect public key via wallet', function () {
|
||||||
verifyConnectedToPubKey();
|
verifyConnectedToPubKey();
|
||||||
cy.getByTestId('currency-title').should('contain.text', 'USDC (fake)');
|
cy.getByTestId('currency-title', Cypress.env('epochTimeout')).should(
|
||||||
|
'contain.text',
|
||||||
|
'USDC (fake)'
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Able to connect public key using url', function () {
|
it('Able to connect public key using url', function () {
|
||||||
|
@ -46,6 +46,6 @@ Cypress.Commands.add('verify_page_header', (text) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
Cypress.Commands.add('wait_for_spinner', () => {
|
Cypress.Commands.add('wait_for_spinner', () => {
|
||||||
cy.get(navigation.pageSpinner).should('exist');
|
cy.get(navigation.pageSpinner, Cypress.env('epochTimeout')).should('exist');
|
||||||
cy.get(navigation.pageSpinner, { timeout: 20000 }).should('not.exist');
|
cy.get(navigation.pageSpinner, { timeout: 20000 }).should('not.exist');
|
||||||
});
|
});
|
||||||
|
@ -6,6 +6,7 @@ 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';
|
||||||
|
import './proposal.functions.js';
|
||||||
import registerCypressGrep from '@cypress/grep';
|
import registerCypressGrep from '@cypress/grep';
|
||||||
import { aliasGQLQuery } from '@vegaprotocol/cypress';
|
import { aliasGQLQuery } from '@vegaprotocol/cypress';
|
||||||
import { chainIdQuery, statisticsQuery } from '@vegaprotocol/mock';
|
import { chainIdQuery, statisticsQuery } from '@vegaprotocol/mock';
|
||||||
|
103
apps/token-e2e/src/support/proposal.functions.js
Normal file
103
apps/token-e2e/src/support/proposal.functions.js
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
import { addSeconds, millisecondsToSeconds } from 'date-fns';
|
||||||
|
|
||||||
|
const walletName = Cypress.env('vegaWalletName');
|
||||||
|
const walletPubKey = Cypress.env('vegaWalletPublicKey');
|
||||||
|
const walletLocation = Cypress.env('vegaWalletLocation');
|
||||||
|
const walletPassphraseFile = './src/fixtures/wallet/passphrase';
|
||||||
|
|
||||||
|
Cypress.Commands.add('sendWalletTxUpdateNetworkProposal', () => {
|
||||||
|
const MIN_CLOSE_SEC = 8;
|
||||||
|
const MIN_ENACT_SEC = 5;
|
||||||
|
|
||||||
|
const closingDate = addSeconds(new Date(), MIN_CLOSE_SEC);
|
||||||
|
const enactmentDate = addSeconds(closingDate, MIN_ENACT_SEC);
|
||||||
|
const closingTimestamp = millisecondsToSeconds(closingDate.getTime());
|
||||||
|
const enactmentTimestamp = millisecondsToSeconds(enactmentDate.getTime());
|
||||||
|
|
||||||
|
cy.exec(
|
||||||
|
`vegawallet transaction send --wallet ${walletName} --pubkey ${walletPubKey} -p ${walletPassphraseFile} --network DV '{
|
||||||
|
"proposalSubmission": {
|
||||||
|
"rationale": {
|
||||||
|
"title": "Add New proposal with short enactment",
|
||||||
|
"description": "E2E enactment test"
|
||||||
|
},
|
||||||
|
"terms": {
|
||||||
|
"updateNetworkParameter": {
|
||||||
|
"changes": {
|
||||||
|
"key": "governance.proposal.updateNetParam.minProposerBalance",
|
||||||
|
"value": "2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"closingTimestamp": ${closingTimestamp},
|
||||||
|
"enactmentTimestamp": ${enactmentTimestamp}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}' --home ${walletLocation}`,
|
||||||
|
{ failOnNonZeroExit: false }
|
||||||
|
)
|
||||||
|
.its('stderr')
|
||||||
|
.should('contain', '');
|
||||||
|
});
|
||||||
|
|
||||||
|
Cypress.Commands.add('sendWalletTxUpdateAssetProposal', () => {
|
||||||
|
const MIN_CLOSE_SEC = 8;
|
||||||
|
const MIN_ENACT_SEC = 5;
|
||||||
|
|
||||||
|
const closingDate = addSeconds(new Date(), MIN_CLOSE_SEC);
|
||||||
|
const enactmentDate = addSeconds(closingDate, MIN_ENACT_SEC);
|
||||||
|
const closingTimestamp = millisecondsToSeconds(closingDate.getTime());
|
||||||
|
const enactmentTimestamp = millisecondsToSeconds(enactmentDate.getTime());
|
||||||
|
|
||||||
|
cy.exec(
|
||||||
|
`vegawallet transaction send --wallet ${walletName} --pubkey ${walletPubKey} -p ${walletPassphraseFile} --network DV '{
|
||||||
|
"proposalSubmission": {
|
||||||
|
"rationale": {
|
||||||
|
"title": "Update Asset set to fail",
|
||||||
|
"description": "E2E fail test"
|
||||||
|
},
|
||||||
|
"terms": {
|
||||||
|
"updateAsset": {
|
||||||
|
"assetId": "ebcd94151ae1f0d39a4bde3b21a9c7ae81a80ea4352fb075a92e07608d9c953d",
|
||||||
|
"changes": {
|
||||||
|
"quantum": "1",
|
||||||
|
"erc20": {
|
||||||
|
"withdrawThreshold": "10",
|
||||||
|
"lifetimeLimit": "10"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"closingTimestamp": ${closingTimestamp},
|
||||||
|
"enactmentTimestamp": ${enactmentTimestamp}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}' --home ${walletLocation}`,
|
||||||
|
{ failOnNonZeroExit: false }
|
||||||
|
)
|
||||||
|
.its('stderr')
|
||||||
|
.should('contain', '');
|
||||||
|
});
|
||||||
|
|
||||||
|
Cypress.Commands.add('sendWalletTxFreeFormProposal', () => {
|
||||||
|
const MIN_CLOSE_SEC = 5;
|
||||||
|
|
||||||
|
const closingDate = addSeconds(new Date(), MIN_CLOSE_SEC);
|
||||||
|
const closingTimestamp = millisecondsToSeconds(closingDate.getTime());
|
||||||
|
|
||||||
|
cy.exec(
|
||||||
|
`vegawallet transaction send --wallet ${walletName} --pubkey ${walletPubKey} -p ${walletPassphraseFile} --network DV '{
|
||||||
|
"proposalSubmission": {
|
||||||
|
"rationale": {
|
||||||
|
"title": "Add New free form proposal with short enactment",
|
||||||
|
"description": "E2E enactment test"
|
||||||
|
},
|
||||||
|
"terms": {
|
||||||
|
"newFreeform": {},
|
||||||
|
"closingTimestamp": ${closingTimestamp}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}' --home ${walletLocation}`,
|
||||||
|
{ failOnNonZeroExit: false }
|
||||||
|
)
|
||||||
|
.its('stderr')
|
||||||
|
.should('contain', '');
|
||||||
|
});
|
@ -102,7 +102,7 @@ export const VoteDetails = ({
|
|||||||
</table>
|
</table>
|
||||||
</section>
|
</section>
|
||||||
)}
|
)}
|
||||||
<section>
|
<section data-testid="votes-table">
|
||||||
<SubHeading title={t('tokenVotes')} />
|
<SubHeading title={t('tokenVotes')} />
|
||||||
<p>
|
<p>
|
||||||
<span>
|
<span>
|
||||||
|
@ -48,7 +48,7 @@ function createNewMarketProposal(): ProposalSubmissionBody {
|
|||||||
signers: [
|
signers: [
|
||||||
{
|
{
|
||||||
pubKey: {
|
pubKey: {
|
||||||
key: '0xfCEAdAFab14d46e20144F48824d0C09B1a03F2BC',
|
key: '70d14a321e02e71992fd115563df765000ccc4775cbe71a0e2f9ff5a3b9dc680',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
@ -188,6 +188,8 @@
|
|||||||
"governance.proposal.updateNetParam.minClose": "2s",
|
"governance.proposal.updateNetParam.minClose": "2s",
|
||||||
"governance.proposal.updateNetParam.minEnact": "2s",
|
"governance.proposal.updateNetParam.minEnact": "2s",
|
||||||
"governance.proposal.updateNetParam.requiredParticipation": "0.00000000000000000000000015",
|
"governance.proposal.updateNetParam.requiredParticipation": "0.00000000000000000000000015",
|
||||||
|
"governance.proposal.freeform.minClose": "2s",
|
||||||
|
"governance.proposal.freeform.requiredParticipation": "0.00000000000000000000000015",
|
||||||
"market.auction.minimumDuration": "3s",
|
"market.auction.minimumDuration": "3s",
|
||||||
"market.fee.factors.infrastructureFee": "0.001",
|
"market.fee.factors.infrastructureFee": "0.001",
|
||||||
"market.fee.factors.makerFee": "0.004",
|
"market.fee.factors.makerFee": "0.004",
|
||||||
|
Loading…
Reference in New Issue
Block a user