Skip to content

Commit de6165f

Browse files
authored
Merge pull request #2910 from IntersectMBO/fix/govAction-adaFormat-voteContext-charLimit
Fix: governance action ada format , vote context char limit and change poll vote
2 parents 0e1c3b7 + 0e0af1a commit de6165f

File tree

6 files changed

+80
-10
lines changed

6 files changed

+80
-10
lines changed

tests/govtool-frontend/playwright/lib/helpers/adaFormat.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,21 @@ const LOVELACE = 1000000;
22

33
export const correctVoteAdaFormat = (
44
lovelace: number | undefined,
5-
locale: string | undefined = undefined
5+
precision = 2
66
) => {
77
if (lovelace) {
88
const ada = lovelace / LOVELACE;
9-
return ada.toLocaleString(locale, {
10-
maximumFractionDigits: 3,
11-
});
9+
if (ada < 1000)
10+
return ada.toLocaleString("en-us", {
11+
maximumFractionDigits: precision,
12+
});
13+
const suffixes = ["k", "M", "B", "T"];
14+
const divisors = [1000, 1000000, 1000000000, 1000000000000];
15+
for (let i = 0; i < suffixes.length; i++) {
16+
if (ada < divisors[i] * 1000) {
17+
return (ada / divisors[i]).toFixed(precision) + suffixes[i];
18+
}
19+
}
1220
}
1321
return "0";
1422
};

tests/govtool-frontend/playwright/lib/pages/governanceActionDetailsPage.ts

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import environments from "@constants/environments";
22
import { downloadMetadata } from "@helpers/metadata";
3-
import { Download, Page } from "@playwright/test";
3+
import { Download, Page, Response } from "@playwright/test";
44
import metadataBucketService from "@services/metadataBucketService";
5+
import { IProposal } from "@types";
56
import { withTxConfirmation } from "lib/transaction.decorator";
67

78
export default class GovernanceActionDetailsPage {
@@ -39,6 +40,9 @@ export default class GovernanceActionDetailsPage {
3940

4041
readonly dRepYesVotes = this.page.getByTestId("submitted-votes-dReps-yes");
4142
readonly dRepNoVotes = this.page.getByTestId("submitted-votes-dReps-no");
43+
readonly dRepNotVoted = this.page.getByTestId(
44+
"submitted-votes-dReps-notVoted"
45+
);
4246
readonly dRepAbstainVotes = this.page.getByTestId(
4347
"submitted-votes-dReps-abstain"
4448
);
@@ -97,6 +101,29 @@ export default class GovernanceActionDetailsPage {
97101
await this.voteBtn.click();
98102
}
99103

104+
async getDRepNotVoted(
105+
proposal: IProposal,
106+
metricsResponsePromise: Promise<Response>
107+
): Promise<number | undefined> {
108+
const metricsResponses = await Promise.resolve(metricsResponsePromise);
109+
const totalStakeControlledByDReps = await metricsResponses
110+
.json()
111+
.then((data) => data.totalStakeControlledByDReps);
112+
113+
if (
114+
totalStakeControlledByDReps &&
115+
typeof totalStakeControlledByDReps === "number"
116+
) {
117+
const dRepNotVoted =
118+
totalStakeControlledByDReps -
119+
proposal.dRepYesVotes -
120+
proposal.dRepAbstainVotes -
121+
proposal.dRepNoVotes;
122+
123+
return dRepNotVoted;
124+
}
125+
}
126+
100127
async downloadVoteMetadata() {
101128
const download: Download = await this.page.waitForEvent("download");
102129
return downloadMetadata(download);

tests/govtool-frontend/playwright/tests/4-proposal-visibility/proposalVisibility.dRep.spec.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,10 @@ test.describe("Check vote count", () => {
150150
)
151151
);
152152

153+
const metricsResponsePromise = page.waitForResponse((response) =>
154+
response.url().includes(`network/metrics`)
155+
);
156+
153157
const governanceActionsPage = new GovernanceActionsPage(page);
154158
await governanceActionsPage.goto();
155159

@@ -180,6 +184,11 @@ test.describe("Check vote count", () => {
180184
`${proposalToCheck.txHash}#${proposalToCheck.index}`
181185
);
182186

187+
const dRepNotVoted = await govActionDetailsPage.getDRepNotVoted(
188+
proposalToCheck,
189+
metricsResponsePromise
190+
);
191+
183192
await govActionDetailsPage.showVotesBtn.click();
184193

185194
// check dRep votes
@@ -193,6 +202,12 @@ test.describe("Check vote count", () => {
193202
await expect(govActionDetailsPage.dRepNoVotes).toHaveText(
194203
`₳ ${correctVoteAdaFormat(proposalToCheck.dRepNoVotes)}`
195204
);
205+
206+
if (dRepNotVoted) {
207+
await expect(govActionDetailsPage.dRepNotVoted).toHaveText(
208+
`₳ ${correctVoteAdaFormat(dRepNotVoted)}`
209+
);
210+
}
196211
}
197212

198213
// check sPos votes

tests/govtool-frontend/playwright/tests/4-proposal-visibility/proposalVisibility.spec.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ test("4K. Should display correct vote counts on governance details page for disc
4545
)
4646
);
4747

48+
const metricsResponsePromise = page.waitForResponse((response) =>
49+
response.url().includes(`network/metrics`)
50+
);
51+
4852
const governanceActionsPage = new GovernanceActionsPage(page);
4953
await governanceActionsPage.goto();
5054
const responses = await Promise.all(responsesPromise);
@@ -71,6 +75,11 @@ test("4K. Should display correct vote counts on governance details page for disc
7175
`${proposalToCheck.txHash}#${proposalToCheck.index}`
7276
);
7377

78+
const dRepNotVoted = await govActionDetailsPage.getDRepNotVoted(
79+
proposalToCheck,
80+
metricsResponsePromise
81+
);
82+
7483
// check dRep votes
7584
if (await areDRepVoteTotalsDisplayed(proposalToCheck)) {
7685
await expect(govActionDetailsPage.dRepYesVotes).toHaveText(
@@ -82,6 +91,12 @@ test("4K. Should display correct vote counts on governance details page for disc
8291
await expect(govActionDetailsPage.dRepNoVotes).toHaveText(
8392
`₳ ${correctVoteAdaFormat(proposalToCheck.dRepNoVotes)}`
8493
);
94+
95+
if (dRepNotVoted) {
96+
await expect(govActionDetailsPage.dRepNotVoted).toHaveText(
97+
`₳ ${correctVoteAdaFormat(dRepNotVoted)}`
98+
);
99+
}
85100
}
86101
// check sPos votes
87102
if (await areSPOVoteTotalsDisplayed(proposalToCheck)) {

tests/govtool-frontend/playwright/tests/5-proposal-functionality/proposalFunctionality.dRep.spec.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,13 +96,18 @@ test.describe("Proposal checks", () => {
9696
});
9797

9898
test.describe("Validate provide context about vote", () => {
99+
const characters =
100+
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
99101
test("5D_1. Should accept valid data in provide context", async () => {
100102
await govActionDetailsPage.contextBtn.click();
101103

102104
await expect(govActionDetailsPage.contextInput).toBeVisible();
103105

104106
for (let i = 0; i < 100; i++) {
105-
const randomContext = faker.lorem.paragraph(2);
107+
const randomContext = faker.string.fromCharacters(characters, {
108+
min: 1,
109+
max: 9999,
110+
});
106111
await govActionDetailsPage.contextInput.fill(randomContext);
107112
expect(await govActionDetailsPage.contextInput.textContent()).toEqual(
108113
randomContext
@@ -118,7 +123,7 @@ test.describe("Proposal checks", () => {
118123
await expect(govActionDetailsPage.contextInput).toBeVisible();
119124

120125
for (let i = 0; i < 100; i++) {
121-
const randomContext = faker.lorem.paragraph(40);
126+
const randomContext = faker.string.fromCharacters(characters, 10001);
122127
await govActionDetailsPage.contextInput.fill(randomContext);
123128
expect(
124129
await govActionDetailsPage.contextInput.textContent()

tests/govtool-frontend/playwright/tests/8-proposal-discussion/proposalDiscussion.loggedin.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ test.describe("Proposal created logged in state", () => {
6868
await proposalDiscussionDetailsPage.addComment(randComment);
6969

7070
await proposalDiscussionDetailsPage.replyComment(randReply);
71-
await expect(page.getByText(randReply)).toBeVisible();
71+
await expect(page.getByText(randReply)).toBeVisible({ timeout: 15_000 });
7272
});
7373
});
7474

@@ -122,12 +122,12 @@ test.describe("Proposal created with poll enabled (user auth)", () => {
122122
// vote must be changed
123123
await expect(
124124
page.getByTestId(`poll-${vote.toLowerCase()}-count`)
125-
).not.toHaveText(`${vote}: (0%)`);
125+
).toHaveText(`${vote}: (0%)`, { timeout: 15_000 });
126126
// opposite of random choice vote
127127
const oppositeVote = pollVotes[pollVotes.length - 1 - choice];
128128
await expect(
129129
page.getByTestId(`poll-${oppositeVote.toLowerCase()}-count`)
130-
).not.toHaveText(`${oppositeVote}: (100%)`);
130+
).toHaveText(`${oppositeVote}: (100%)`);
131131
});
132132
});
133133

0 commit comments

Comments
 (0)