diff --git a/tests/govtool-frontend/playwright/.env.example b/tests/govtool-frontend/playwright/.env.example index 18caf343a..c68929567 100644 --- a/tests/govtool-frontend/playwright/.env.example +++ b/tests/govtool-frontend/playwright/.env.example @@ -18,7 +18,7 @@ NETWORK=preview FAUCET_ADDRESS= FAUCET_PAYMENT_PRIVATE= -FAUCET_STAKE_PKH= +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/README.md b/tests/govtool-frontend/playwright/README.md index deb18fae4..43e9515ab 100644 --- a/tests/govtool-frontend/playwright/README.md +++ b/tests/govtool-frontend/playwright/README.md @@ -106,13 +106,13 @@ The script will: šŸŽ‰ Wallet generated successfully! ----------------------------------- šŸ”‘ Payment Private Key: -šŸ”— Stake Public Key Hash: +šŸ’° Stake Private Key: šŸ  Wallet Address: ----------------------------------- šŸ“‹ Please copy the following to your environment variables: 1. Set FAUCET_PAYMENT_PRIVATE= -2. Set FAUCET_STAKE_PKH= +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 c61b1137b..4d4fc2d9d 100644 --- a/tests/govtool-frontend/playwright/generate_faucet_wallet.ts +++ b/tests/govtool-frontend/playwright/generate_faucet_wallet.ts @@ -11,7 +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(`šŸ  Wallet Address: ${walletJson.address}`); console.log("-----------------------------------"); @@ -20,7 +20,7 @@ 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(`2. Set FAUCET_STAKE_PRIVATE=${walletJson.stake.private}`); console.log(`3. Set FAUCET_ADDRESS=${walletJson.address}`); console.log( diff --git a/tests/govtool-frontend/playwright/lib/constants/environments.ts b/tests/govtool-frontend/playwright/lib/constants/environments.ts index 1882424c6..dc88762a2 100644 --- a/tests/govtool-frontend/playwright/lib/constants/environments.ts +++ b/tests/govtool-frontend/playwright/lib/constants/environments.ts @@ -18,7 +18,9 @@ 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: { + private: process.env.FAUCET_STAKE_PRIVATE, + }, }, kuber: { apiUrl: `https://${NETWORK}.kuber.cardanoapi.io`, 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 3b5b658eb..86fc90cc3 100644 --- a/tests/govtool-frontend/playwright/lib/helpers/index.ts +++ b/tests/govtool-frontend/playwright/lib/helpers/index.ts @@ -22,7 +22,7 @@ export const getWalletConfigForFaucet = () => { private: environments.faucet.payment.private || "", }, stake: { - pkh: environments.faucet.stake.pkh || "", + private: environments.faucet.stake.private || "", }, 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 3826af310..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,6 +35,15 @@ Object.values(ProposalType).forEach((proposalType, index) => { test.setTimeout(testInfo.timeout + environments.txTimeOut); const wallet = await walletManager.popWallet("proposalSubmission"); + + 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 = stakePublic; + await logWalletDetails(wallet.address); const tempUserAuth = await createTempUserAuth(page, wallet); @@ -46,16 +56,22 @@ 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(); await proposalDiscussionPage.continueBtn.click(); - const rewardAddress = rewardAddressBech32( - environments.networkId, - getWalletConfigForFaucet().stake.pkh - ); + const rewardAddress = rewardAddressBech32(environments.networkId, stakePkh); await proposalSubmissionPage.createProposal(rewardAddress, proposalType); @@ -99,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); 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); });