Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
f99371d
feat: add skeleton tests for proposal budget features
kneerose Mar 31, 2025
24aac2f
tests: restrict budget proposal creation in disconnect state
kneerose Apr 2, 2025
78c1f23
tests: access budget discussion page
kneerose Apr 2, 2025
e964180
tests: search budget proposal by title
kneerose Apr 2, 2025
3a41668
tests: budget proposal filter
kneerose Apr 2, 2025
d67b5b2
tests: sort budget proposal by asc and desc
kneerose Apr 2, 2025
811f3d6
tests: view-all functionality for categorized budget proposals
kneerose Apr 2, 2025
b368b38
chore: add BudgetDiscussionDetailsPage and viewFirstProposal method
kneerose Apr 3, 2025
a27a645
tests: sharing functionality for budget proposal
kneerose Apr 3, 2025
f82916d
fix: update budget proposal selection to use data-testid and remove c…
kneerose Apr 3, 2025
f4103a1
test: update regex for budget proposals title matching
kneerose Apr 3, 2025
d22e479
chore: add mock data for budget proposal, polls and comments
kneerose Apr 3, 2025
c1e0a0a
test: enhance budget proposal tests with comment viewing and access r…
kneerose Apr 3, 2025
515b07b
feat: add budgetProposal01Wallet and corresponding auth setup for bud…
kneerose Apr 3, 2025
e744b15
test: budget discussion page login user functionality
kneerose Apr 3, 2025
ec593ae
chore: add budget discussion submission page with createBudgetProposal
kneerose Apr 3, 2025
bd0a5cb
feat: add budget proposal fixture
kneerose Apr 3, 2025
5adc882
fix: update budget proposal type references to use BudgetDiscussionEnum
kneerose Apr 3, 2025
a76d04b
tests: poll vote and change vote behaviour by registered dRep
kneerose Apr 3, 2025
7db6d74
tests: access proposal creation page in connected state
kneerose Apr 3, 2025
79b9522
fix: budget proposal filter test due to testIds
kneerose Apr 3, 2025
d098b68
fix: catgegorized budget proposal type due to no category
kneerose Apr 3, 2025
8ebc3b9
chore: add given name on registered dRep wallet json
kneerose Apr 3, 2025
49e03ba
fix: given name set on wallet issue
kneerose Apr 3, 2025
140d6df
tests: display dRep tag, name and id on registered dRep comment
kneerose Apr 3, 2025
0b80ed4
fix: proposal creation issue due to update on testids
kneerose Apr 4, 2025
d7f5df9
fix: dRep poll vote/comment issue
kneerose Apr 4, 2025
dd28dd6
feat: add dRep03Wallet and corresponding auth setup
kneerose Apr 4, 2025
a17b0ee
fix: country of incorportation and budgetDiscussion auth
kneerose Apr 4, 2025
4a5bf1a
fix: improve faucet setup balance retrieval with waited assertion
kneerose Apr 4, 2025
dad65fa
tests: create and view draft bidget proposal
kneerose Apr 4, 2025
7344adb
feat: add budgetProposal03 and budgetProposal04 wallets with correspo…
kneerose Apr 4, 2025
54e6e0d
test: submit valid budget draft and proposal
kneerose Apr 4, 2025
cdd5640
refactor: remove unused skipTestForProposalBudget function
kneerose Apr 4, 2025
ce88512
chore: update proposal creation page access test
kneerose Apr 4, 2025
ecce28d
tests: budget discussion form field visibility
kneerose Apr 4, 2025
5a95dc4
fix: change generate wallet to 24
kneerose Apr 4, 2025
a689982
Merge pull request #3381 from IntersectMBO/tests/proposal-budget
mesudip Apr 4, 2025
87ba0a3
tests: validate review submitted budget proposal
kneerose Apr 4, 2025
250d1ac
chore: skip pending implementation tests and add description
kneerose Apr 4, 2025
a901919
fix: update DREP_WALLETS_COUNT to 10
kneerose Apr 4, 2025
13007b6
fix: click verifyiIdentityBtn before viewProposal
kneerose Apr 4, 2025
c83e974
Merge pull request #3384 from IntersectMBO/tests/proposal-budget
mesudip Apr 4, 2025
9fb6e7c
chore: update @intersect.mbo/pdf-ui to 0.7.0-beta-13
github-actions[bot] Apr 8, 2025
45a9b0e
Merge pull request #3405 from IntersectMBO/chore/@intersect.mbo/pdf-u…
bosko-m Apr 8, 2025
76ebe61
chore: update @intersect.mbo/pdf-ui to 0.7.0-beta-14
github-actions[bot] Apr 8, 2025
66632f3
Merge pull request #3412 from IntersectMBO/chore/@intersect.mbo/pdf-u…
bosko-m Apr 8, 2025
c2e825c
chore: update @intersect.mbo/pdf-ui to 0.7.0-beta-15
github-actions[bot] Apr 8, 2025
ee847d5
Merge pull request #3414 from IntersectMBO/chore/@intersect.mbo/pdf-u…
bosko-m Apr 8, 2025
1c69063
chore: update @intersect.mbo/pdf-ui to 0.7.0-beta-16
github-actions[bot] Apr 8, 2025
d20a986
Merge pull request #3416 from IntersectMBO/chore/@intersect.mbo/pdf-u…
bosko-m Apr 8, 2025
cac53b6
Merge pull request #3420 from IntersectMBO/develop
bosko-m Apr 8, 2025
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
8 changes: 4 additions & 4 deletions govtool/frontend/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion govtool/frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
"@hookform/resolvers": "^3.3.1",
"@intersect.mbo/govtool-outcomes-pillar-ui": "1.3.0",
"@intersect.mbo/intersectmbo.org-icons-set": "^1.0.8",
"@intersect.mbo/pdf-ui": "0.7.0-beta-12",
"@intersect.mbo/pdf-ui": "0.7.0-beta-16",
"@mui/icons-material": "^5.14.3",
"@mui/material": "^5.14.4",
"@rollup/plugin-babel": "^6.0.4",
Expand Down
8 changes: 4 additions & 4 deletions govtool/frontend/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1512,10 +1512,10 @@
resolved "https://registry.npmjs.org/@intersect.mbo/intersectmbo.org-icons-set/-/intersectmbo.org-icons-set-1.1.0.tgz"
integrity sha512-sjKEtnK9eLYH/8kCD0YRQCms3byFA/tnSsei9NHTZbBYX9sBpeX6ErfR0sKYjOSxQOxl4FumX9D0X+vHIqxo8g==

"@intersect.mbo/[email protected]12":
version "0.7.0-beta-12"
resolved "https://registry.npmjs.org/@intersect.mbo/pdf-ui/-/pdf-ui-0.7.0-beta-12.tgz"
integrity sha512-f6G9AOi2k7Fbz+DUHtkfSzGsbfCi0e2inNw7Ft6hiTxVU7CGn9kY3bzMPcdBlV25xPnpBA3+ObLGX81H7cC5aA==
"@intersect.mbo/[email protected]16":
version "0.7.0-beta-16"
resolved "https://registry.npmjs.org/@intersect.mbo/pdf-ui/-/pdf-ui-0.7.0-beta-16.tgz"
integrity sha512-2I7BSg+5FDGhlvwLdZk0teVhtPMRQ1uDWKQiwobIF41cM0b+iT2CJMDL5MJk6tsM2/2JBbOEev9VrsHSanrCVA==
dependencies:
"@emurgo/cardano-serialization-lib-asmjs" "^12.0.0-beta.2"
"@fontsource/poppins" "^5.0.14"
Expand Down
171 changes: 171 additions & 0 deletions tests/govtool-frontend/playwright/lib/_mock/budgetProposal.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
{
"data": {
"id": 49,
"attributes": {
"privacy_policy": true,
"intersect_named_administrator": true,
"prop_comments_number": 2,
"is_active": true,
"createdAt": "2025-03-31T12:08:38.908Z",
"updatedAt": "2025-04-01T08:09:46.924Z",
"intersect_admin_further_text": null,
"creator": {
"data": {
"id": 1300,
"attributes": {
"username": "e0d7ccd5f411be1bb732a3770fd4c79b74bd5fc75ac76bdfe73f2d8893",
"email": "e0d7ccd5f411be1bb732a3770fd4c79b74bd5fc75ac76bdfe73f2d8893@example.com",
"provider": "local",
"confirmed": true,
"blocked": false,
"govtool_username": "intersectadmin",
"createdAt": "2025-03-31T09:43:04.102Z",
"updatedAt": "2025-03-31T09:43:17.516Z"
}
}
},
"bd_costing": {
"data": {
"id": 49,
"attributes": {
"ada_amount": "0",
"amount_in_preferred_currency": "300000",
"usd_to_ada_conversion_rate": "0",
"cost_breakdown": "25% up front, 75% on delivery.\n\nUp front: $75,000\nOn delivery: $225,000",
"createdAt": "2025-03-31T12:08:38.879Z",
"updatedAt": "2025-03-31T12:08:38.879Z",
"preferred_currency": {
"data": {
"id": 1,
"attributes": {
"currency_name": "United States Dollar",
"currency_letter_code": "USD",
"currency_number_code": "840",
"createdAt": "2025-03-31T08:49:25.530Z",
"updatedAt": "2025-03-31T08:49:25.530Z",
"publishedAt": "2025-03-31T08:49:25.529Z"
}
}
}
}
}
},
"bd_proposal_detail": {
"data": {
"id": 49,
"attributes": {
"experience": "Wanchain has already deployed cross-chain value bridges to Cardano. Wanchain has also already deployed XPort on other networks.",
"proposal_name": "Deploy XPort, Wanchain's cross-chain data transfer protocol, to Cardano",
"key_dependencies": "No dependencies",
"maintain_and_support": "Wanchain will provide ongoing maintenance.",
"proposal_description": "Blockchain interoperability is essential for the growth and adoption of decentralized technologies. As a leading blockchain network, Cardano has established itself as a secure, scalable, and research-driven ecosystem. However, interoperability with other blockchains remains limited. Wanchain’s XPort protocol offers a decentralized, secure, and efficient cross-chain data transfer solution, making it an ideal candidate to bridge Cardano with external blockchain ecosystems. This proposal is for the deployment of XPort to Cardano, enabling seamless cross-chain data transfers between Cardano and other blockchain networks.\n\nAbout Cross-Chain Data Transfer Protocols\n\nCross-Chain Data Transfer Protocols enable data to be passed from one blockchain to another. Rather than only moving fungible and non-fungible tokens, which are a specific type of data structure, Cross-Chain Data Transfer Protocols can move any type of data. Importantly, Cross-Chain Data Transfer Protocols can feed data into 3rd party smart contracts to seamlessly execute on-chain logic and create novel cross-chain applications.\n\nThe basic flow of all Cross-Chain Data Transfers Protocols is as follows:\n\n- A user or smart contract records arbitrary data on the source chain\n- The off-chain component detects these data\n- The off-chain component records these data on the destination chain\n- A smart contract executes on-chain logic on the destination chain using these data\n\nAbout XPort\n\nTrue to its legacy, XPort is deceptively simple. It essentially just detects data on a source blockchain then exports it to the destination chain in the correct format.\n\nXPort is composed of two basic elements: one robust off-chain relayer and a set of rudimentary on-chain smart contracts called Cross-Chain Gateways.\n\n1. The off-chain relayer is the same Bridge Node Group that secures all cross-chain transactions executed using the Wanchain Bridge. These permissionless Bridge Nodes are rotated and re-elected monthly. They use Multiparty Computation and Shamir’s Secret Sharing cryptography to transfer messages and arbitrary data across chains.\n\n2. A smart contract, called a Cross-Chain Gateway, is deployed on each supported blockchain. These Cross-Chain Gateways have limited functionality — they can essentially only send and receive data. They serve as the point of contact for all 3rd party developers.\n\nImportantly, XPort is designed to be compliant with the Enterprise Ethereum Alliance’s Distributed Ledger Technology Interoperability Specification, co-authored by Wanchain’s VP on Engineering Dr. Weijia Zhang.\n\nMore technical information about XPort: https://docs.wanchain.org/latest-major-updates/xport-wanchains-cross-chain-data-transfer-protocol-development-handbook",
"key_proposal_deliverables": "- XPort interface definition adjustment to support Cardano\n\n- XPort deployed on Cardano Pre-Production\n\n- XPort deployed on Cardano Mainnet: developers will be able to build applications that seamlessly span multiple networks using XPort",
"resourcing_duration_estimates": "Budget: 400,000 USD\nTeam size: ~30\nDuration: 9 months",
"other_contract_type": "",
"createdAt": "2025-03-31T12:08:38.864Z",
"updatedAt": "2025-03-31T12:08:38.864Z",
"contract_type_name": {
"data": {
"id": 3,
"attributes": {
"contract_type_name": "Service Level Agreement",
"createdAt": "2025-03-31T08:49:37.711Z",
"updatedAt": "2025-03-31T08:49:37.711Z",
"publishedAt": "2025-03-31T08:49:37.710Z"
}
}
}
}
}
},
"bd_further_information": {
"data": {
"id": 49,
"attributes": {
"createdAt": "2025-03-31T12:08:38.891Z",
"updatedAt": "2025-03-31T12:08:38.891Z",
"proposal_links": []
}
}
},
"bd_psapb": {
"data": {
"id": 49,
"attributes": {
"problem_statement": "Seamless cross-chain communication is a challenge for permissionless blockchains due to their inherent lack of interoperability. This limitation is rooted in their trustless nature, as blockchains need a mechanism to verify the authenticity of data before processing it. When dealing with heterogeneous blockchain networks, each with their own distinct ruleset and security guarantees, cross-chain communication is currently impossible without the intervention of an off-chain component.\n\nIn many ways, this problem is just the oracle problem. The oracle problem, for those who are unfamiliar, refers to a blockchain’s inability to access external data, rendering it isolated. An additional piece of infrastructure — whether you want to call it a bridge, an oracle or a relayer — is needed to connect the blockchain and the off-chain data. With cross-chain communication, the problem is the same. The data that needs to be accessed just happens to be on another blockchain!\n\nCross-Chain Data Transfer Protocols enable data to be passed from one blockchain to another. Rather than only moving fungible and non-fungible tokens, which are a specific type of data structure, Cross-Chain Data Transfer Protocols can move any type of data. Importantly, Cross-Chain Data Transfer Protocols can feed data into 3rd party smart contracts to seamlessly execute on-chain logic and create novel cross-chain applications.\n\nThis proposal is to deploy XPort, Wanchain's cross-chain data transfer protocol, to Cardano.",
"proposal_benefit": "Once deployed, XPort will allow arbitrary data to flow between Cardano, any EVM, and select non-EVM networks. This will enable developers to develop applications that span multiple blockchains. It will also empower developers to shift their focus from extracting value out of a blockchain to importing execution logic into one. \n\nOther potential benefits include but are not limited to:\n\n- Improved interoperability between Cardano and the of the industry\n- Expanded access to liquidity and assets on other chains\n- Greater abstraction to improve UX\n- Reduced bridge risk\n- Improved developer experience\n- More modular application design/New types of applications",
"supplementary_endorsement": "Wanchain is the longest running cross-chain bridge in the blockchain industry and is the primary cross-chain value bridge currently servicing the Cardano mainnet. It has received good support from the Cardano community (multiple approved Catalyst proposals) and Cardano Dapps (like Liqwid).",
"explain_proposal_roadmap": "",
"createdAt": "2025-03-31T12:08:38.846Z",
"updatedAt": "2025-03-31T12:08:38.846Z",
"committee_name": {
"data": {
"id": 2,
"attributes": {
"committee_name": "Product Committee",
"createdAt": "2025-03-31T08:50:27.431Z",
"updatedAt": "2025-03-31T08:50:27.431Z",
"publishedAt": "2025-03-31T08:50:27.429Z"
}
}
},
"roadmap_name": {
"data": {
"id": 2,
"attributes": {
"roadmap_name": "Architectural Excellence",
"createdAt": "2025-03-31T08:49:40.879Z",
"updatedAt": "2025-03-31T08:49:40.879Z",
"publishedAt": "2025-03-31T08:49:40.877Z"
}
}
},
"type_name": {
"data": {
"id": 6,
"attributes": {
"type_name": "Core",
"createdAt": "2025-03-31T10:40:44.559Z",
"updatedAt": "2025-03-31T10:40:45.976Z",
"publishedAt": "2025-03-31T10:40:45.971Z"
}
}
}
}
}
},
"bd_proposal_ownership": {
"data": {
"id": 50,
"attributes": {
"agreed": true,
"group_name": "",
"company_name": "Wanchain",
"type_of_group": "",
"social_handles": "https://x.com/wanchain_org, https://x.com/TemujinLouie",
"submited_on_behalf": "Company",
"company_domain_name": "wanchain.org",
"proposal_public_champion": "Submission lead listed above",
"key_info_to_identify_group": "",
"createdAt": "2025-03-31T12:08:38.826Z",
"updatedAt": "2025-03-31T12:08:38.826Z",
"be_country": {
"data": {
"id": 32,
"attributes": {
"country_name": "British Virgin Islands",
"alfa_2_code": "VG",
"alfa_3_code": "VGB",
"createdAt": "2025-03-31T08:49:04.220Z",
"updatedAt": "2025-03-31T08:49:04.220Z",
"publishedAt": "2025-03-31T08:49:04.219Z"
}
}
}
}
}
}
}
},
"meta": {}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
{
"data": [
{
"id": 427,
"attributes": {
"proposal_id": null,
"comment_parent_id": null,
"user_id": "1187",
"comment_text": "test comment 2",
"createdAt": "2025-04-03T06:04:32.388Z",
"updatedAt": "2025-04-03T06:04:32.388Z",
"bd_proposal_id": "49",
"drep_id": "34b1eb01917db5d3f39757c94e85004c5e3d41462fd1d82da01264a9",
"comments_reports": {
"data": []
},
"user_govtool_username": "testeternl1",
"subcommens_number": 0
}
},
{
"id": 426,
"attributes": {
"proposal_id": null,
"comment_parent_id": null,
"user_id": "1187",
"comment_text": "test comment 1",
"createdAt": "2025-04-03T06:04:23.380Z",
"updatedAt": "2025-04-03T06:04:23.380Z",
"bd_proposal_id": "49",
"drep_id": "34b1eb01917db5d3f39757c94e85004c5e3d41462fd1d82da01264a9",
"comments_reports": {
"data": []
},
"user_govtool_username": "testeternl1",
"subcommens_number": 0
}
},
{
"id": 384,
"attributes": {
"proposal_id": null,
"comment_parent_id": null,
"user_id": "38",
"comment_text": "test comment",
"createdAt": "2025-04-01T08:09:39.135Z",
"updatedAt": "2025-04-01T08:09:39.135Z",
"bd_proposal_id": "49",
"drep_id": null,
"comments_reports": {
"data": []
},
"user_govtool_username": "testlace",
"subcommens_number": 1
}
}
],
"meta": {
"pagination": {
"page": 1,
"pageSize": 25,
"pageCount": 1,
"total": 3
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"data": [
{
"id": 48,
"attributes": {
"bd_proposal_id": "49",
"poll_yes": 0,
"poll_no": 0,
"is_poll_active": true,
"createdAt": "2025-03-31T12:08:38.928Z",
"updatedAt": "2025-03-31T12:08:38.928Z"
}
}
],
"meta": {
"pagination": {
"page": 1,
"pageSize": 1,
"pageCount": 1,
"total": 1
}
}
}
8 changes: 6 additions & 2 deletions tests/govtool-frontend/playwright/lib/_mock/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,11 @@ export const valid = {
return `ipfs://${randomCID}`;
},

metadata: (paymentAddress: string, imageObject: imageObject) => ({
metadata: (
paymentAddress: string,
imageObject: imageObject,
givenName: string
) => ({
"@context": {
"@language": "en-us",
CIP100:
Expand Down Expand Up @@ -212,7 +216,7 @@ export const valid = {
authors: [],
hashAlgorithm: "blake2b-256",
body: {
givenName: faker.person.firstName(),
givenName: givenName,
image: imageObject,
motivations: faker.lorem.paragraph(2),
objectives: faker.lorem.paragraph(2),
Expand Down
32 changes: 19 additions & 13 deletions tests/govtool-frontend/playwright/lib/constants/staticWallets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,27 +5,33 @@ export const faucetWallet = staticWallets[0];

export const dRep01Wallet = staticWallets[1];
export const dRep02Wallet = staticWallets[2];
export const dRep03Wallet = staticWallets[3];

export const adaHolder01Wallet = staticWallets[3];
export const adaHolder02Wallet = staticWallets[4];
export const adaHolder01Wallet = staticWallets[4];
export const adaHolder02Wallet = staticWallets[5];
export const adaHolder03Wallet = staticWallets[6];
export const adaHolder04Wallet = staticWallets[7];
export const adaHolder05Wallet = staticWallets[8];
export const adaHolder06Wallet = staticWallets[9];

// Does not takes part in transaction
export const user01Wallet: StaticWallet = staticWallets[5];
export const user01Wallet: StaticWallet = staticWallets[10];

// Username is already set
export const proposal01Wallet: StaticWallet = staticWallets[10];
export const proposal02Wallet: StaticWallet = staticWallets[11];
export const proposal03Wallet: StaticWallet = staticWallets[12];
export const proposal04Wallet: StaticWallet = staticWallets[13];
export const proposal05Wallet: StaticWallet = staticWallets[14];
export const proposal06Wallet: StaticWallet = staticWallets[15];
export const proposal07Wallet: StaticWallet = staticWallets[16];
export const proposal08Wallet: StaticWallet = staticWallets[17];
export const proposal09Wallet: StaticWallet = staticWallets[18];
export const proposal01Wallet: StaticWallet = staticWallets[11];
export const proposal02Wallet: StaticWallet = staticWallets[12];
export const proposal03Wallet: StaticWallet = staticWallets[13];
export const proposal04Wallet: StaticWallet = staticWallets[14];
export const proposal05Wallet: StaticWallet = staticWallets[15];
export const proposal06Wallet: StaticWallet = staticWallets[16];
export const proposal07Wallet: StaticWallet = staticWallets[17];
export const proposal08Wallet: StaticWallet = staticWallets[18];
export const proposal09Wallet: StaticWallet = staticWallets[19];

export const budgetProposal01Wallet: StaticWallet = staticWallets[20];
export const budgetProposal02Wallet: StaticWallet = staticWallets[21];
export const budgetProposal03Wallet: StaticWallet = staticWallets[22];
export const budgetProposal04Wallet: StaticWallet = staticWallets[23];

export const adaHolderWallets = [
adaHolder01Wallet,
Expand All @@ -38,7 +44,7 @@ export const adaHolderWallets = [

export const userWallets = [user01Wallet];

export const dRepWallets = [dRep01Wallet, dRep02Wallet];
export const dRepWallets = [dRep01Wallet, dRep02Wallet, dRep03Wallet];

export const proposalWallets = [
proposal01Wallet,
Expand Down
Loading
Loading