From 5781bb45bc57e4dbf942e35a9ff50acdc913d232 Mon Sep 17 00:00:00 2001 From: Niraj Date: Fri, 16 May 2025 12:26:26 +0545 Subject: [PATCH 1/7] chore: set proposal wallet stake pkh to faucet stake pkh --- .../tests/7-proposal-submission/proposalSubmission.ga.spec.ts | 2 ++ tests/govtool-frontend/playwright/tests/proposal.setup.ts | 3 +-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/govtool-frontend/playwright/tests/7-proposal-submission/proposalSubmission.ga.spec.ts b/tests/govtool-frontend/playwright/tests/7-proposal-submission/proposalSubmission.ga.spec.ts index 3826af310..94d7a450b 100644 --- a/tests/govtool-frontend/playwright/tests/7-proposal-submission/proposalSubmission.ga.spec.ts +++ b/tests/govtool-frontend/playwright/tests/7-proposal-submission/proposalSubmission.ga.spec.ts @@ -34,6 +34,8 @@ Object.values(ProposalType).forEach((proposalType, index) => { test.setTimeout(testInfo.timeout + environments.txTimeOut); const wallet = await walletManager.popWallet("proposalSubmission"); + wallet.stake.pkh = getWalletConfigForFaucet().stake.pkh; + await logWalletDetails(wallet.address); const tempUserAuth = await createTempUserAuth(page, wallet); diff --git a/tests/govtool-frontend/playwright/tests/proposal.setup.ts b/tests/govtool-frontend/playwright/tests/proposal.setup.ts index 4a44b621c..57bd5f70e 100644 --- a/tests/govtool-frontend/playwright/tests/proposal.setup.ts +++ b/tests/govtool-frontend/playwright/tests/proposal.setup.ts @@ -28,8 +28,7 @@ setup.beforeEach(async () => { await setAllureStory("Proposal"); await skipIfMainnet(); const totalRequiredBalanceForWallets = - (govActionDeposit / 1000000) * PROPOSAL_WALLETS_COUNT + - 22 * PROPOSAL_WALLETS_COUNT; + (govActionDeposit / 1000000 + 22) * PROPOSAL_WALLETS_COUNT; await skipIfBalanceIsInsufficient(totalRequiredBalanceForWallets); }); From 1086814acea8e4b8aae95cbc063ee6b4a1ddb3e5 Mon Sep 17 00:00:00 2001 From: Niraj Date: Mon, 19 May 2025 13:50:56 +0545 Subject: [PATCH 2/7] chore: add public and private stake keys to faucet configuration --- tests/govtool-frontend/playwright/.env.example | 2 ++ .../playwright/lib/constants/environments.ts | 6 +++++- tests/govtool-frontend/playwright/lib/helpers/index.ts | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/tests/govtool-frontend/playwright/.env.example b/tests/govtool-frontend/playwright/.env.example index 18caf343a..99ae700ef 100644 --- a/tests/govtool-frontend/playwright/.env.example +++ b/tests/govtool-frontend/playwright/.env.example @@ -19,6 +19,8 @@ NETWORK=preview FAUCET_ADDRESS= FAUCET_PAYMENT_PRIVATE= FAUCET_STAKE_PKH= +FAUCET_STAKE_PUBLIC= +FAUCET_STAKE_PRIVATE= CI=true TEST_WORKERS=6 // Number of workers to run in parallel \ No newline at end of file diff --git a/tests/govtool-frontend/playwright/lib/constants/environments.ts b/tests/govtool-frontend/playwright/lib/constants/environments.ts index 1882424c6..1201fa0cf 100644 --- a/tests/govtool-frontend/playwright/lib/constants/environments.ts +++ b/tests/govtool-frontend/playwright/lib/constants/environments.ts @@ -18,7 +18,11 @@ const environments = { apiUrl: `https://faucet.${NETWORK}.world.dev.cardano.org`, address: process.env.FAUCET_ADDRESS, payment: { private: process.env.FAUCET_PAYMENT_PRIVATE }, - stake: { pkh: process.env.FAUCET_STAKE_PKH }, + stake: { + pkh: process.env.FAUCET_STAKE_PKH, + private: process.env.FAUCET_STAKE_PRIVATE, + public: process.env.FAUCET_STAKE_PUBLIC, + }, }, kuber: { apiUrl: `https://${NETWORK}.kuber.cardanoapi.io`, diff --git a/tests/govtool-frontend/playwright/lib/helpers/index.ts b/tests/govtool-frontend/playwright/lib/helpers/index.ts index 3b5b658eb..7754a726e 100644 --- a/tests/govtool-frontend/playwright/lib/helpers/index.ts +++ b/tests/govtool-frontend/playwright/lib/helpers/index.ts @@ -23,6 +23,8 @@ export const getWalletConfigForFaucet = () => { }, stake: { pkh: environments.faucet.stake.pkh || "", + private: environments.faucet.stake.private || "", + public: environments.faucet.stake.public || "", }, address: environments.faucet.address || "", }; From c383a7304e5260ca690e9915a3b7e406bd38039b Mon Sep 17 00:00:00 2001 From: Niraj Date: Mon, 19 May 2025 13:51:48 +0545 Subject: [PATCH 3/7] chore: update README and wallet generation script to include stake private and public keys --- tests/govtool-frontend/playwright/README.md | 6 +++++- tests/govtool-frontend/playwright/generate_faucet_wallet.ts | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/tests/govtool-frontend/playwright/README.md b/tests/govtool-frontend/playwright/README.md index deb18fae4..3ede5b326 100644 --- a/tests/govtool-frontend/playwright/README.md +++ b/tests/govtool-frontend/playwright/README.md @@ -107,13 +107,17 @@ The script will: ----------------------------------- šŸ”‘ Payment Private Key: šŸ”— Stake Public Key Hash: +šŸ’° Stake Private Key: +šŸ’³ Stake Public Key: šŸ  Wallet Address: ----------------------------------- šŸ“‹ Please copy the following to your environment variables: 1. Set FAUCET_PAYMENT_PRIVATE= 2. Set FAUCET_STAKE_PKH= -3. Set FAUCET_ADDRESS= +3. Set FAUCET_STAKE_PRIVATE= +4. Set FAUCET_STAKE_PUBLIC= +5. Set FAUCET_ADDRESS= šŸŽˆ All set! Please ensure this wallet is funded with a sufficient balance ``` diff --git a/tests/govtool-frontend/playwright/generate_faucet_wallet.ts b/tests/govtool-frontend/playwright/generate_faucet_wallet.ts index c61b1137b..b73e644a3 100644 --- a/tests/govtool-frontend/playwright/generate_faucet_wallet.ts +++ b/tests/govtool-frontend/playwright/generate_faucet_wallet.ts @@ -12,6 +12,8 @@ import { ShelleyWallet } from "./lib/helpers/crypto"; console.log("šŸ’¼ Wallet:", walletJson); console.log(`\nšŸ”‘ Payment Private Key: ${walletJson.payment.private}`); console.log(`šŸ”— Stake Public Key Hash: ${walletJson.stake.pkh}`); + console.log(`šŸ’° Stake Private Key: ${walletJson.stake.private}`); + console.log(`šŸ’³ Stake Public Key: ${walletJson.stake.public}`); console.log(`šŸ  Wallet Address: ${walletJson.address}`); console.log("-----------------------------------"); @@ -21,7 +23,9 @@ import { ShelleyWallet } from "./lib/helpers/crypto"; ); console.log(`1. Set FAUCET_PAYMENT_PRIVATE=${walletJson.payment.private}`); console.log(`2. Set FAUCET_STAKE_PKH=${walletJson.stake.pkh}`); - console.log(`3. Set FAUCET_ADDRESS=${walletJson.address}`); + console.log(`3. Set FAUCET_STAKE_PRIVATE=${walletJson.stake.private}`); + console.log(`4. Set FAUCET_STAKE_PUBLIC=${walletJson.stake.public}`); + console.log(`5. Set FAUCET_ADDRESS=${walletJson.address}`); console.log( "\nšŸŽˆ All set! Please ensure this wallet is funded with a sufficient balance" From c077613dd52d589f232b8a75cf1517b1183a7235 Mon Sep 17 00:00:00 2001 From: Niraj Date: Mon, 19 May 2025 13:52:08 +0545 Subject: [PATCH 4/7] chore: add stake keys to wallet and handle username input during proposal submission --- .../proposalSubmission.ga.spec.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tests/govtool-frontend/playwright/tests/7-proposal-submission/proposalSubmission.ga.spec.ts b/tests/govtool-frontend/playwright/tests/7-proposal-submission/proposalSubmission.ga.spec.ts index 94d7a450b..b19253312 100644 --- a/tests/govtool-frontend/playwright/tests/7-proposal-submission/proposalSubmission.ga.spec.ts +++ b/tests/govtool-frontend/playwright/tests/7-proposal-submission/proposalSubmission.ga.spec.ts @@ -35,6 +35,8 @@ Object.values(ProposalType).forEach((proposalType, index) => { const wallet = await walletManager.popWallet("proposalSubmission"); wallet.stake.pkh = getWalletConfigForFaucet().stake.pkh; + wallet.stake.private = getWalletConfigForFaucet().stake.private; + wallet.stake.public = getWalletConfigForFaucet().stake.public; await logWalletDetails(wallet.address); @@ -48,7 +50,16 @@ Object.values(ProposalType).forEach((proposalType, index) => { const proposalDiscussionPage = new ProposalDiscussionPage(userPage); await proposalDiscussionPage.goto(); await proposalDiscussionPage.verifyIdentityBtn.click(); - await proposalDiscussionPage.setUsername(mockValid.username()); + + try { + await expect(userPage.getByTestId("username-input")).toBeVisible({ + timeout: 10_000, + }); + await proposalDiscussionPage.setUsername(mockValid.username()); + } catch (error) { + // Ignore error if username is already set + console.log("Username is already set"); + } const proposalSubmissionPage = new ProposalSubmissionPage(userPage); await proposalSubmissionPage.proposalCreateBtn.click(); From aaacacb7c94a0c3676631905b753888292a5f2b0 Mon Sep 17 00:00:00 2001 From: Niraj Date: Tue, 20 May 2025 10:19:30 +0545 Subject: [PATCH 5/7] chore: remove stake public key and public key hash from env --- tests/govtool-frontend/playwright/.env.example | 2 -- tests/govtool-frontend/playwright/README.md | 8 ++------ .../govtool-frontend/playwright/generate_faucet_wallet.ts | 8 ++------ 3 files changed, 4 insertions(+), 14 deletions(-) diff --git a/tests/govtool-frontend/playwright/.env.example b/tests/govtool-frontend/playwright/.env.example index 99ae700ef..c68929567 100644 --- a/tests/govtool-frontend/playwright/.env.example +++ b/tests/govtool-frontend/playwright/.env.example @@ -18,8 +18,6 @@ NETWORK=preview FAUCET_ADDRESS= FAUCET_PAYMENT_PRIVATE= -FAUCET_STAKE_PKH= -FAUCET_STAKE_PUBLIC= FAUCET_STAKE_PRIVATE= CI=true diff --git a/tests/govtool-frontend/playwright/README.md b/tests/govtool-frontend/playwright/README.md index 3ede5b326..43e9515ab 100644 --- a/tests/govtool-frontend/playwright/README.md +++ b/tests/govtool-frontend/playwright/README.md @@ -106,18 +106,14 @@ The script will: šŸŽ‰ Wallet generated successfully! ----------------------------------- šŸ”‘ Payment Private Key: -šŸ”— Stake Public Key Hash: šŸ’° Stake Private Key: -šŸ’³ Stake Public Key: šŸ  Wallet Address: ----------------------------------- šŸ“‹ Please copy the following to your environment variables: 1. Set FAUCET_PAYMENT_PRIVATE= -2. Set FAUCET_STAKE_PKH= -3. Set FAUCET_STAKE_PRIVATE= -4. Set FAUCET_STAKE_PUBLIC= -5. Set FAUCET_ADDRESS= +2. Set FAUCET_STAKE_PRIVATE= +3. Set FAUCET_ADDRESS= šŸŽˆ All set! Please ensure this wallet is funded with a sufficient balance ``` diff --git a/tests/govtool-frontend/playwright/generate_faucet_wallet.ts b/tests/govtool-frontend/playwright/generate_faucet_wallet.ts index b73e644a3..4d4fc2d9d 100644 --- a/tests/govtool-frontend/playwright/generate_faucet_wallet.ts +++ b/tests/govtool-frontend/playwright/generate_faucet_wallet.ts @@ -11,9 +11,7 @@ import { ShelleyWallet } from "./lib/helpers/crypto"; console.log("-----------------------------------"); console.log("šŸ’¼ Wallet:", walletJson); console.log(`\nšŸ”‘ Payment Private Key: ${walletJson.payment.private}`); - console.log(`šŸ”— Stake Public Key Hash: ${walletJson.stake.pkh}`); console.log(`šŸ’° Stake Private Key: ${walletJson.stake.private}`); - console.log(`šŸ’³ Stake Public Key: ${walletJson.stake.public}`); console.log(`šŸ  Wallet Address: ${walletJson.address}`); console.log("-----------------------------------"); @@ -22,10 +20,8 @@ import { ShelleyWallet } from "./lib/helpers/crypto"; "\nšŸ“‹ Please copy the following to your environment variables:" ); console.log(`1. Set FAUCET_PAYMENT_PRIVATE=${walletJson.payment.private}`); - console.log(`2. Set FAUCET_STAKE_PKH=${walletJson.stake.pkh}`); - console.log(`3. Set FAUCET_STAKE_PRIVATE=${walletJson.stake.private}`); - console.log(`4. Set FAUCET_STAKE_PUBLIC=${walletJson.stake.public}`); - console.log(`5. Set FAUCET_ADDRESS=${walletJson.address}`); + console.log(`2. Set FAUCET_STAKE_PRIVATE=${walletJson.stake.private}`); + console.log(`3. Set FAUCET_ADDRESS=${walletJson.address}`); console.log( "\nšŸŽˆ All set! Please ensure this wallet is funded with a sufficient balance" From a3b7c6add6a4261b8597b5bd5694e6181b2bc673 Mon Sep 17 00:00:00 2001 From: Niraj Date: Tue, 20 May 2025 10:21:08 +0545 Subject: [PATCH 6/7] feat: generate keys from private keyHex --- .../playwright/lib/helpers/crypto.ts | 6 ++++++ .../playwright/lib/helpers/index.ts | 2 -- .../proposalSubmission.ga.spec.ts | 17 ++++++++++------- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/tests/govtool-frontend/playwright/lib/helpers/crypto.ts b/tests/govtool-frontend/playwright/lib/helpers/crypto.ts index c221c747e..62442ac9f 100644 --- a/tests/govtool-frontend/playwright/lib/helpers/crypto.ts +++ b/tests/govtool-frontend/playwright/lib/helpers/crypto.ts @@ -247,3 +247,9 @@ export class ShelleyWalletAddress implements Address { return Buffer.from(this.toRawBytes()).toString("hex"); } } + +export const createKeyFromPrivateKeyHex = async ( + privateKeyHex: string +): Promise => { + return await Ed25519Key.fromPrivateKeyHex(privateKeyHex); +}; diff --git a/tests/govtool-frontend/playwright/lib/helpers/index.ts b/tests/govtool-frontend/playwright/lib/helpers/index.ts index 7754a726e..86fc90cc3 100644 --- a/tests/govtool-frontend/playwright/lib/helpers/index.ts +++ b/tests/govtool-frontend/playwright/lib/helpers/index.ts @@ -22,9 +22,7 @@ export const getWalletConfigForFaucet = () => { private: environments.faucet.payment.private || "", }, stake: { - pkh: environments.faucet.stake.pkh || "", private: environments.faucet.stake.private || "", - public: environments.faucet.stake.public || "", }, address: environments.faucet.address || "", }; diff --git a/tests/govtool-frontend/playwright/tests/7-proposal-submission/proposalSubmission.ga.spec.ts b/tests/govtool-frontend/playwright/tests/7-proposal-submission/proposalSubmission.ga.spec.ts index b19253312..8f41a226b 100644 --- a/tests/govtool-frontend/playwright/tests/7-proposal-submission/proposalSubmission.ga.spec.ts +++ b/tests/govtool-frontend/playwright/tests/7-proposal-submission/proposalSubmission.ga.spec.ts @@ -19,6 +19,7 @@ import { getWalletConfigForFaucet } from "@helpers/index"; import { faker } from "@faker-js/faker"; import { proposalSubmissionAuthFile } from "@constants/auth"; import ProposalDiscussionDetailsPage from "@pages/proposalDiscussionDetailsPage"; +import { createKeyFromPrivateKeyHex } from "@helpers/crypto"; test.beforeEach(async () => { await setAllureEpic("7. Proposal submission"); @@ -34,9 +35,14 @@ Object.values(ProposalType).forEach((proposalType, index) => { test.setTimeout(testInfo.timeout + environments.txTimeOut); const wallet = await walletManager.popWallet("proposalSubmission"); - wallet.stake.pkh = getWalletConfigForFaucet().stake.pkh; + + const stakeKeys = await createKeyFromPrivateKeyHex( + environments.faucet.stake.private || "" + ); + const { pkh: stakePkh, public: stakePublic } = stakeKeys.json(); + wallet.stake.pkh = stakePkh; wallet.stake.private = getWalletConfigForFaucet().stake.private; - wallet.stake.public = getWalletConfigForFaucet().stake.public; + wallet.stake.public = stakePublic; await logWalletDetails(wallet.address); @@ -65,10 +71,7 @@ Object.values(ProposalType).forEach((proposalType, index) => { await proposalSubmissionPage.proposalCreateBtn.click(); await proposalDiscussionPage.continueBtn.click(); - const rewardAddress = rewardAddressBech32( - environments.networkId, - getWalletConfigForFaucet().stake.pkh - ); + const rewardAddress = rewardAddressBech32(environments.networkId, stakePkh); await proposalSubmissionPage.createProposal(rewardAddress, proposalType); @@ -112,7 +115,7 @@ test.describe("Proposed as a governance action", async () => { const rewardAddress = rewardAddressBech32( environments.networkId, - getWalletConfigForFaucet().stake.pkh + getWalletConfigForFaucet().address ); proposalId = await proposalSubmissionPage.createProposal(rewardAddress); From 3d4e9eea1bcd65cd4f3efcf40dacd39067af9660 Mon Sep 17 00:00:00 2001 From: Niraj Date: Tue, 20 May 2025 10:22:46 +0545 Subject: [PATCH 7/7] chore: remove stake public key and public key hash from environments configuration --- tests/govtool-frontend/playwright/lib/constants/environments.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/govtool-frontend/playwright/lib/constants/environments.ts b/tests/govtool-frontend/playwright/lib/constants/environments.ts index 1201fa0cf..dc88762a2 100644 --- a/tests/govtool-frontend/playwright/lib/constants/environments.ts +++ b/tests/govtool-frontend/playwright/lib/constants/environments.ts @@ -19,9 +19,7 @@ const environments = { address: process.env.FAUCET_ADDRESS, payment: { private: process.env.FAUCET_PAYMENT_PRIVATE }, stake: { - pkh: process.env.FAUCET_STAKE_PKH, private: process.env.FAUCET_STAKE_PRIVATE, - public: process.env.FAUCET_STAKE_PUBLIC, }, }, kuber: {