Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion tests/govtool-frontend/playwright/.env.example
Original file line number Diff line number Diff line change
Expand Up @@ -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
4 changes: 2 additions & 2 deletions tests/govtool-frontend/playwright/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,13 +106,13 @@ The script will:
🎉 Wallet generated successfully!
-----------------------------------
🔑 Payment Private Key: <your-payment-private-key>
🔗 Stake Public Key Hash: <your-stake-pkh>
💰 Stake Private Key: <your-stake-private>
🏠 Wallet Address: <your-wallet-address>
-----------------------------------

📋 Please copy the following to your environment variables:
1. Set FAUCET_PAYMENT_PRIVATE=<your-payment-private-key>
2. Set FAUCET_STAKE_PKH=<your-stake-pkh>
2. Set FAUCET_STAKE_PRIVATE=<your-stake-private>
3. Set FAUCET_ADDRESS=<your-wallet-address>

🎈 All set! Please ensure this wallet is funded with a sufficient balance
Expand Down
4 changes: 2 additions & 2 deletions tests/govtool-frontend/playwright/generate_faucet_wallet.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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("-----------------------------------");

Expand All @@ -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(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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`,
Expand Down
6 changes: 6 additions & 0 deletions tests/govtool-frontend/playwright/lib/helpers/crypto.ts
Original file line number Diff line number Diff line change
Expand Up @@ -247,3 +247,9 @@ export class ShelleyWalletAddress implements Address {
return Buffer.from(this.toRawBytes()).toString("hex");
}
}

export const createKeyFromPrivateKeyHex = async (
privateKeyHex: string
): Promise<Ed25519Key> => {
return await Ed25519Key.fromPrivateKeyHex(privateKeyHex);
};
2 changes: 1 addition & 1 deletion tests/govtool-frontend/playwright/lib/helpers/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 || "",
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand All @@ -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);
Expand All @@ -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);

Expand Down Expand Up @@ -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);
Expand Down
3 changes: 1 addition & 2 deletions tests/govtool-frontend/playwright/tests/proposal.setup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
});

Expand Down