From 74e700955b0c14d79624f97edfedf471bfb0ac36 Mon Sep 17 00:00:00 2001 From: W3rahul Date: Thu, 17 Aug 2023 18:47:58 +0530 Subject: [PATCH 01/36] WIP: Test Case - Module TC 05 and further --- tests/CommonFile/PreTokenStaking.js | 28 ------------------- ...TC05-01_SuccessfulTokenWithdrawal.spec.js} | 8 +++++- .../TC05-02_SuccessfulTokenUnStaking.spec.js | 12 -------- ...=> TC05-03_SuccessfulTokenStaking.spec.js} | 16 +++++------ 4 files changed, 15 insertions(+), 49 deletions(-) delete mode 100644 tests/CommonFile/PreTokenStaking.js rename tests/TC05/{TC05-03_SuccessfulTokenWithdrawal.spec.js => TC05-01_SuccessfulTokenWithdrawal.spec.js} (79%) rename tests/TC05/{TC05-01_SuccessfulTokenStaking.spec.js => TC05-03_SuccessfulTokenStaking.spec.js} (60%) diff --git a/tests/CommonFile/PreTokenStaking.js b/tests/CommonFile/PreTokenStaking.js deleted file mode 100644 index 8ec7118..0000000 --- a/tests/CommonFile/PreTokenStaking.js +++ /dev/null @@ -1,28 +0,0 @@ -const { test, expect } = require("@playwright/test"); -const { PreProposal } = require("../CommonFile/PreAction"); -const { pageLocators } = require("../CommonFile/Locator"); -const { TezosTestData } = require("../CommonFile/TestData"); - -async function PreTokenStaking(page){ - - test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes - - await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal - - await page.click(pageLocators.TokenStaking.User); //Click on the User Tab - - await page.click(pageLocators.TokenWithdrawal.Withdraw); //Click On withdrawal Button - - // await page.type(pageLocators.TokenWithdrawal.Amount, TezosTestData.TokenWithdrawal.Amount); //Click On the WithDraw Amount - - await page.click(pageLocators.TokenWithdrawal.UseMax); //Click on the Use Max - - await page.click(pageLocators.TokenWithdrawal.Submit); //Click On the Submit Button - - await page.waitForTimeout(30000); //Wait for Transaction Confirmed - -} - -module.exports= { - PreTokenStaking -} \ No newline at end of file diff --git a/tests/TC05/TC05-03_SuccessfulTokenWithdrawal.spec.js b/tests/TC05/TC05-01_SuccessfulTokenWithdrawal.spec.js similarity index 79% rename from tests/TC05/TC05-03_SuccessfulTokenWithdrawal.spec.js rename to tests/TC05/TC05-01_SuccessfulTokenWithdrawal.spec.js index f499ea1..8d15808 100644 --- a/tests/TC05/TC05-03_SuccessfulTokenWithdrawal.spec.js +++ b/tests/TC05/TC05-01_SuccessfulTokenWithdrawal.spec.js @@ -3,7 +3,7 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 3: Successful Token Withdrawal', async ({ page }) => { +test('Test case 1: Successful Token Withdrawal', async ({ page }) => { test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes @@ -19,6 +19,12 @@ test('Test case 3: Successful Token Withdrawal', async ({ page }) => { await page.click(pageLocators.TokenWithdrawal.Submit); //Click On the Submit Button + await page.waitForTimeout(30000); //Wait for Transaction Confirmed + + const element = await page.$(pageLocators.TokenStaking.Balance); //Get The element + + await page.waitForTimeout(2000); //Wait for get the votes + const isTextVisible = content.includes(pageLocators.TokenWithdrawal.TransactionText, { visible: true }); //Verify that text visible on the webpage console.log(isTextVisible); // console The Pass And Fail Result diff --git a/tests/TC05/TC05-02_SuccessfulTokenUnStaking.spec.js b/tests/TC05/TC05-02_SuccessfulTokenUnStaking.spec.js index 6e132f8..f507394 100644 --- a/tests/TC05/TC05-02_SuccessfulTokenUnStaking.spec.js +++ b/tests/TC05/TC05-02_SuccessfulTokenUnStaking.spec.js @@ -8,18 +8,6 @@ test('Test case 2: Successful Token UnStaking', async ({ page }) => { await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal - await page.click(pageLocators.OffChainPoll.Proposal); //Click on the proposal on the Tab - - try { - - await page.click(pageLocators.ProposalExecutionAndDrop.DropProposal); // Click on Drop All Proposals - - } catch (error) { - console.log("Button not ready to be clicked") - } - - await page.waitForTimeout(5000); //Wait For Drop All The Proposal - await page.click(pageLocators.TokenStaking.User); //Click on the User Tab await page.click(pageLocators.UnStakingToken.UnStakeVotes); //Click on UnStake Votes diff --git a/tests/TC05/TC05-01_SuccessfulTokenStaking.spec.js b/tests/TC05/TC05-03_SuccessfulTokenStaking.spec.js similarity index 60% rename from tests/TC05/TC05-01_SuccessfulTokenStaking.spec.js rename to tests/TC05/TC05-03_SuccessfulTokenStaking.spec.js index 3fe5b15..ece8bda 100644 --- a/tests/TC05/TC05-01_SuccessfulTokenStaking.spec.js +++ b/tests/TC05/TC05-03_SuccessfulTokenStaking.spec.js @@ -1,13 +1,13 @@ const { test, expect } = require("@playwright/test"); -const { PreTokenStaking } = require("../CommonFile/PreTokenStaking"); +const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const path = require('path'); -test('Test case 1: Successful Token Staking', async ({ page }) => { +test('Test case 3: Successful Token Staking', async ({ page }) => { test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes - await PreTokenStaking(page); //PreConditions Open URL and Open Mask DAO For Proposal + await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal await page.click(pageLocators.TokenStaking.User); //Click on the User ON the Tab @@ -21,14 +21,14 @@ test('Test case 1: Successful Token Staking', async ({ page }) => { await page.waitForTimeout(30000); //Wait for Transaction Confirmed - const element = await page.$(pageLocators.TokenStaking.Balance); // get The element + const element = await page.$(pageLocators.TokenStaking.Balance); //Get The element - await page.waitForTimeout(2000); //wait for get the votes + await page.waitForTimeout(2000); //Wait for get the votes - const textContent = await element.innerText(); //get the text From this element + const textContent = await element.innerText(); //Get the text From this element - console.log(textContent); // Console The test Present on the Webpage + console.log(textContent); //Console The test Present on the Webpage - console.log(" The tokens are successfully staked and and show up as available balance field"); + console.log("The tokens are successfully staked and and show up as available balance field"); }) \ No newline at end of file From 88658f934ed2ff559ca4b95ab87bebc21628ed2c Mon Sep 17 00:00:00 2001 From: W3rahul Date: Mon, 21 Aug 2023 12:49:29 +0530 Subject: [PATCH 02/36] WIP: Test Case - Module TC 05 and further --- tests/CommonFile/Locator.js | 6 +++--- tests/CommonFile/PreVoteOnOffChainPoll.js | 2 ++ tests/CommonFile/TestData.js | 9 ++++----- tests/TC04/TC04-02_VoteonOffChainPoll.spec.js | 11 +++++++---- tests/TC05/TC05-01_SuccessfulTokenWithdrawal.spec.js | 4 +++- 5 files changed, 19 insertions(+), 13 deletions(-) diff --git a/tests/CommonFile/Locator.js b/tests/CommonFile/Locator.js index efcd672..471d52e 100644 --- a/tests/CommonFile/Locator.js +++ b/tests/CommonFile/Locator.js @@ -184,9 +184,9 @@ const pageLocators = { }, VoteOnOffChainPoll: { - ProposalName: "//h4[text()='Community Governance']", - Option1: "//div[@class='Introduce Liquid Democracy']", - Option2: "//p[text()='Increase Proposal Exploration Period']", + ProposalTitle: "//h4[text()='Community']", + Choice1: "//p[text()='Democracy']", + Choice2: "//p[text()='Exploration']", CastYourVote: "//span[text()='Cast your vote']", VoteDone: "Your vote has been submitted", }, diff --git a/tests/CommonFile/PreVoteOnOffChainPoll.js b/tests/CommonFile/PreVoteOnOffChainPoll.js index 07ce5ae..13b331f 100644 --- a/tests/CommonFile/PreVoteOnOffChainPoll.js +++ b/tests/CommonFile/PreVoteOnOffChainPoll.js @@ -35,6 +35,8 @@ async function PreVoteOnOffChainPoll(page){ await page.click(pageLocators.OffChainPoll.CreateProposalButton); //Click on the Create Proposal Button + await page.waitForTimeout(3000); //Wait Transactions + await page.click(pageLocators.OffChainPoll.CloseButton); //Click on x Mark diff --git a/tests/CommonFile/TestData.js b/tests/CommonFile/TestData.js index 744837b..fc1fc32 100644 --- a/tests/CommonFile/TestData.js +++ b/tests/CommonFile/TestData.js @@ -98,12 +98,11 @@ const TezosTestData = { OffChainPoll: { - ProposalTitle: "Community Governance", + ProposalTitle: 'Community', ShortDescription: "This proposal aims to conduct an off-chain poll to gather community input on potential upgrades to the Tezos governance process.", - ExternalLink: "https://examplelink.com/tezos-gov-upgrades-poll", - Choice1: "Introduce Liquid Democracy", - Choice2: "Increase Proposal Exploration Period", - CreateProposalButton: "button[class='MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-containedSecondary']", + ExternalLink: "https://tezos-gov-upgrades.com", + Choice1: "Democracy", + Choice2: "Exploration", DD: "01", HH: "05", MM: "00", diff --git a/tests/TC04/TC04-02_VoteonOffChainPoll.spec.js b/tests/TC04/TC04-02_VoteonOffChainPoll.spec.js index 25fd8a9..9a719dd 100644 --- a/tests/TC04/TC04-02_VoteonOffChainPoll.spec.js +++ b/tests/TC04/TC04-02_VoteonOffChainPoll.spec.js @@ -1,21 +1,24 @@ const { test, expect } = require("@playwright/test"); const { pageLocators } = require("../CommonFile/Locator"); const { PreVoteOnOffChainPoll } = require("../CommonFile/PreVoteOnOffChainPoll"); +const { TezosTestData } = require("../CommonFile/TestData"); test('Test case 2: Vote On Off Chain Proposal ', async ({ page }) => { - test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes - await PreVoteOnOffChainPoll(page); //PreConditions Open URL and Open Mask DAO For Proposal await page.waitForTimeout(2000); //Wait for page Load - await page.click(pageLocators.VoteOnOffChainPoll.ProposalName); //Click on the Proposal Name + await page.click(pageLocators.VoteOnOffChainPoll.ProposalTitle); //Click on the Proposal Name - await page.click(pageLocators.VoteOnOffChainPoll.Option2); //Click On Option 2 + await page.click(pageLocators.VoteOnOffChainPoll.Choice1); //Click On Option 1 await page.click(pageLocators.VoteOnOffChainPoll.CastYourVote); //Submit Your Votes + const content = await page.content(); //Assume Page + + await page.waitForSelector(pageLocators.VoteOnOffChainPoll.VoteDone, { visible: true }); //Wait for Text Visible on Webpage + console.log("The vote is successfully recorded and the user is redirected to a confirmation page with the details of the vote."); }) \ No newline at end of file diff --git a/tests/TC05/TC05-01_SuccessfulTokenWithdrawal.spec.js b/tests/TC05/TC05-01_SuccessfulTokenWithdrawal.spec.js index 8d15808..d041b22 100644 --- a/tests/TC05/TC05-01_SuccessfulTokenWithdrawal.spec.js +++ b/tests/TC05/TC05-01_SuccessfulTokenWithdrawal.spec.js @@ -9,7 +9,9 @@ test('Test case 1: Successful Token Withdrawal', async ({ page }) => { await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal - await page.click(pageLocators.TokenStaking.User); //Click On the User tab s + await page.click(pageLocators.TokenStaking.User); //Click On the User tab + + await page.waitForTimeout(30000); //Wait for Pass all API await page.click(pageLocators.TokenWithdrawal.Withdraw); //Click On withdrawal Button From 629b68247669dc06672a831d22cf2eef2ecd2987 Mon Sep 17 00:00:00 2001 From: w3rahul Date: Tue, 29 Aug 2023 18:57:04 +0530 Subject: [PATCH 03/36] WIP: Test Case - Module TC 02 and further --- tests/CommonFile/Locator.js | 1 + tests/CommonFile/PreAction.js | 2 ++ tests/TC02/TC02-02_ChangeGuardian.spec.js | 2 +- tests/TC02/TC02-04_ChangeConfiguration.spec.js | 2 -- tests/TC05/TC05-01_SuccessfulTokenWithdrawal.spec.js | 10 ++-------- tests/TC05/TC05-02_SuccessfulTokenUnStaking.spec.js | 6 +++++- tests/TC05/TC05-03_SuccessfulTokenStaking.spec.js | 12 ++++-------- 7 files changed, 15 insertions(+), 20 deletions(-) diff --git a/tests/CommonFile/Locator.js b/tests/CommonFile/Locator.js index 471d52e..0b7f784 100644 --- a/tests/CommonFile/Locator.js +++ b/tests/CommonFile/Locator.js @@ -219,6 +219,7 @@ const pageLocators = { UseMax: "//p[text()='Use Max']", Submit: "//span[text()='Submit']", TransactionText: "Withdrawal transaction confirmed", + AvailableBalance: "0", } }; diff --git a/tests/CommonFile/PreAction.js b/tests/CommonFile/PreAction.js index 5ab4a7e..642cde9 100644 --- a/tests/CommonFile/PreAction.js +++ b/tests/CommonFile/PreAction.js @@ -4,6 +4,8 @@ const { changeNetwork } = require("./Action"); async function PreProposal(page){ + test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes + await changeNetwork(page); //PreConditions Open URL and Selecting the Ghost-net await page.click(pageLocators.OffChainPoll.MaskDAO); //Click on Mask DAO diff --git a/tests/TC02/TC02-02_ChangeGuardian.spec.js b/tests/TC02/TC02-02_ChangeGuardian.spec.js index 3aa2579..59ec06d 100644 --- a/tests/TC02/TC02-02_ChangeGuardian.spec.js +++ b/tests/TC02/TC02-02_ChangeGuardian.spec.js @@ -36,4 +36,4 @@ test('Test case 2: Change Guardian', async ({ page }) => { console.log("Now Voting Cycle is running"); } -}) \ No newline at end of file +}) \ No newline at end of file diff --git a/tests/TC02/TC02-04_ChangeConfiguration.spec.js b/tests/TC02/TC02-04_ChangeConfiguration.spec.js index 69c146e..0bb0665 100644 --- a/tests/TC02/TC02-04_ChangeConfiguration.spec.js +++ b/tests/TC02/TC02-04_ChangeConfiguration.spec.js @@ -18,10 +18,8 @@ test('Test case 4: Change Configuration', async ({ page }) => { await page.click(pageLocators.ChangeConfiguration.DAOConfiguration); //Click on DAO Configuration await page.fill(pageLocators.ChangeConfiguration.ProposalFee, TezosTestData.ChangeConfiguration.ProposalFee); // Pass The Proposal Fee - //await page.keyboard.type('1'); await page.fill(pageLocators.ChangeConfiguration.ReturnedTokenPercentage, TezosTestData.ChangeConfiguration.ReturnedTokenPercentage); //Pass The Returned Token Percentage - //await page.keyboard.type('1'); await page.waitForTimeout(2000); //Wait For Type The Letters diff --git a/tests/TC05/TC05-01_SuccessfulTokenWithdrawal.spec.js b/tests/TC05/TC05-01_SuccessfulTokenWithdrawal.spec.js index d041b22..33472c5 100644 --- a/tests/TC05/TC05-01_SuccessfulTokenWithdrawal.spec.js +++ b/tests/TC05/TC05-01_SuccessfulTokenWithdrawal.spec.js @@ -11,21 +11,15 @@ test('Test case 1: Successful Token Withdrawal', async ({ page }) => { await page.click(pageLocators.TokenStaking.User); //Click On the User tab - await page.waitForTimeout(30000); //Wait for Pass all API - await page.click(pageLocators.TokenWithdrawal.Withdraw); //Click On withdrawal Button - // await page.type(pageLocators.TokenWithdrawal.Amount, TezosTestData.TokenWithdrawal.Amount); //Click On the WithDraw Amount - await page.click(pageLocators.TokenWithdrawal.UseMax); //Click on the Use Max await page.click(pageLocators.TokenWithdrawal.Submit); //Click On the Submit Button - await page.waitForTimeout(30000); //Wait for Transaction Confirmed - - const element = await page.$(pageLocators.TokenStaking.Balance); //Get The element + await page.waitForTimeout(30000); //Wait for get the votes - await page.waitForTimeout(2000); //Wait for get the votes + const content = await page.content(); //Assume Page const isTextVisible = content.includes(pageLocators.TokenWithdrawal.TransactionText, { visible: true }); //Verify that text visible on the webpage diff --git a/tests/TC05/TC05-02_SuccessfulTokenUnStaking.spec.js b/tests/TC05/TC05-02_SuccessfulTokenUnStaking.spec.js index f507394..c56c3c0 100644 --- a/tests/TC05/TC05-02_SuccessfulTokenUnStaking.spec.js +++ b/tests/TC05/TC05-02_SuccessfulTokenUnStaking.spec.js @@ -12,10 +12,14 @@ test('Test case 2: Successful Token UnStaking', async ({ page }) => { await page.click(pageLocators.UnStakingToken.UnStakeVotes); //Click on UnStake Votes - await page.waitForTimeout(2000); //Wait For Complete The Transaction + await page.waitForTimeout(30000); //Wait For Complete The Transaction + + const content = await page.content(); //Assume Page const isTextVisible = content.includes(pageLocators.UnStakingToken.TransactionText, { visible: true }); //Verify that text visible on the webpage + console.log(isTextVisible); + console.log("The tokens are successfully UnStaked and show up in the Available Balance field.") }) \ No newline at end of file diff --git a/tests/TC05/TC05-03_SuccessfulTokenStaking.spec.js b/tests/TC05/TC05-03_SuccessfulTokenStaking.spec.js index ece8bda..0a6d13c 100644 --- a/tests/TC05/TC05-03_SuccessfulTokenStaking.spec.js +++ b/tests/TC05/TC05-03_SuccessfulTokenStaking.spec.js @@ -13,21 +13,17 @@ test('Test case 3: Successful Token Staking', async ({ page }) => { await page.click(pageLocators.TokenStaking.Deposit); //Click on the Deposit Button - //await page.type(pageLocators.TokenStaking.PassAmount, TezosTestData.TokenStaking.Amount); //Pass The Amount - await page.click(pageLocators.TokenStaking.UseMax); //Click onn the User Max + await page.waitForTimeout(2000); //Wait for the type numbers in text box + await page.click(pageLocators.TokenStaking.Submit); //Click on the Submit Button await page.waitForTimeout(30000); //Wait for Transaction Confirmed - const element = await page.$(pageLocators.TokenStaking.Balance); //Get The element - - await page.waitForTimeout(2000); //Wait for get the votes - - const textContent = await element.innerText(); //Get the text From this element + const content = await page.content(); //Assume Page - console.log(textContent); //Console The test Present on the Webpage + const isTextVisible = content.includes(pageLocators.TokenStaking.TransactionText, { visible: true }); //Verify that text visible on the webpage console.log("The tokens are successfully staked and and show up as available balance field"); From 18fc35fd3450631798525fe7fc2b0204825d30f9 Mon Sep 17 00:00:00 2001 From: w3rahul Date: Tue, 29 Aug 2023 23:10:09 +0530 Subject: [PATCH 04/36] WIP: Test Case - Module TC 02 and further --- .github/workflows/Test.yml | 14 +++++++++++++- tests/CommonFile/Locator.js | 2 +- tests/CommonFile/PreAction.js | 2 +- tests/CommonFile/TestData.js | 6 +++--- tests/TC04/TC04-02_VoteonOffChainPoll.spec.js | 8 ++++++-- .../TC04-03_CorrectVoteCountOnOffChainPoll.spec.js | 2 +- ...js => TC05-01_SuccessfulTokenUnStaking.spec.js} | 8 +++++--- ...s => TC05-02_SuccessfulTokenWithdrawal.spec.js} | 8 +++++--- tests/TC05/TC05-03_SuccessfulTokenStaking.spec.js | 5 ++++- 9 files changed, 39 insertions(+), 16 deletions(-) rename tests/TC05/{TC05-02_SuccessfulTokenUnStaking.spec.js => TC05-01_SuccessfulTokenUnStaking.spec.js} (77%) rename tests/TC05/{TC05-01_SuccessfulTokenWithdrawal.spec.js => TC05-02_SuccessfulTokenWithdrawal.spec.js} (73%) diff --git a/.github/workflows/Test.yml b/.github/workflows/Test.yml index 65aacd0..e17fe76 100644 --- a/.github/workflows/Test.yml +++ b/.github/workflows/Test.yml @@ -75,4 +75,16 @@ jobs: with: branch: gh-pages folder: playwright-report # The folder the action should deploy. - target-folder: tests/pr-01/tc-04/ \ No newline at end of file + target-folder: tests/pr-01/tc-04/ + + - name: TC05 - Run Playwright tests + run: npm run test:tc05 + env: + WEBAPP_URL: ${{ vars.WEBAPP_URL }} + + - name: TC05 - Deploy Report for TC 05πŸš€ + uses: JamesIves/github-pages-deploy-action@v4 + with: + branch: gh-pages + folder: playwright-report # The folder the action should deploy. + target-folder: tests/pr-01/tc-05/ \ No newline at end of file diff --git a/tests/CommonFile/Locator.js b/tests/CommonFile/Locator.js index 0b7f784..2d2ec4a 100644 --- a/tests/CommonFile/Locator.js +++ b/tests/CommonFile/Locator.js @@ -162,7 +162,7 @@ const pageLocators = { }, OffChainPoll: { - MaskDAO: "//p[text()='Mask DAO']", + EasyTaskDAO: "//p[text()='Easy Task DAO']", Proposal: "//p[text()='Proposals']", cycle: "//p[text()='Creating']", NewProposal: "//span[text()='New Proposal']", diff --git a/tests/CommonFile/PreAction.js b/tests/CommonFile/PreAction.js index 642cde9..b702a96 100644 --- a/tests/CommonFile/PreAction.js +++ b/tests/CommonFile/PreAction.js @@ -8,7 +8,7 @@ async function PreProposal(page){ await changeNetwork(page); //PreConditions Open URL and Selecting the Ghost-net - await page.click(pageLocators.OffChainPoll.MaskDAO); //Click on Mask DAO + await page.click(pageLocators.OffChainPoll.EasyTaskDAO); //Click on Mask DAO await page.click(pageLocators.OffChainPoll.Proposal); //Click on Proposal diff --git a/tests/CommonFile/TestData.js b/tests/CommonFile/TestData.js index fc1fc32..7ead0b1 100644 --- a/tests/CommonFile/TestData.js +++ b/tests/CommonFile/TestData.js @@ -56,7 +56,7 @@ const TezosTestData = { TransferToken: { RecipientAddress: "tz1VxgGHwU6T6MaWrzfCBSpg2tw823KWVbk6", - Asset: "SRD", + Asset: "$", Amount: "10", AgoraPostID: "10", }, @@ -109,11 +109,11 @@ const TezosTestData = { }, TokenStaking: { - Amount: "000+-e" + Amount: "20" }, TokenWithdrawal: { - Amount: "23456E_+", + Amount: "23", }, diff --git a/tests/TC04/TC04-02_VoteonOffChainPoll.spec.js b/tests/TC04/TC04-02_VoteonOffChainPoll.spec.js index 9a719dd..a1a7356 100644 --- a/tests/TC04/TC04-02_VoteonOffChainPoll.spec.js +++ b/tests/TC04/TC04-02_VoteonOffChainPoll.spec.js @@ -15,10 +15,14 @@ test('Test case 2: Vote On Off Chain Proposal ', async ({ page }) => { await page.click(pageLocators.VoteOnOffChainPoll.CastYourVote); //Submit Your Votes - const content = await page.content(); //Assume Page + await page.waitForTimeout(1000); //wait for CastYourVote - await page.waitForSelector(pageLocators.VoteOnOffChainPoll.VoteDone, { visible: true }); //Wait for Text Visible on Webpage + const content = await page.content(); //Assume Page + + const isTextVisible = content.includes(pageLocators.VoteOnOffChainPoll.VoteDone, { visible: true }); //Verify that text visible on the webpage + console.log(isTextVisible); //Prints True or false for is Text Visible + console.log("The vote is successfully recorded and the user is redirected to a confirmation page with the details of the vote."); }) \ No newline at end of file diff --git a/tests/TC04/TC04-03_CorrectVoteCountOnOffChainPoll.spec.js b/tests/TC04/TC04-03_CorrectVoteCountOnOffChainPoll.spec.js index c1d03f9..102bc5e 100644 --- a/tests/TC04/TC04-03_CorrectVoteCountOnOffChainPoll.spec.js +++ b/tests/TC04/TC04-03_CorrectVoteCountOnOffChainPoll.spec.js @@ -8,7 +8,7 @@ test('Test case 3: Correct vote Count on Off Chain Poll ', async ({ page }) => { await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal - await page.click(pageLocators.VoteOnOffChainPoll.ProposalName); + await page.click(pageLocators.VoteOnOffChainPoll.ProposalTitle); //Click on proposal title await page.waitForSelector(pageLocators.CorrectVoteCount.VoteCount); //Wait for find the Element diff --git a/tests/TC05/TC05-02_SuccessfulTokenUnStaking.spec.js b/tests/TC05/TC05-01_SuccessfulTokenUnStaking.spec.js similarity index 77% rename from tests/TC05/TC05-02_SuccessfulTokenUnStaking.spec.js rename to tests/TC05/TC05-01_SuccessfulTokenUnStaking.spec.js index c56c3c0..bc3f62c 100644 --- a/tests/TC05/TC05-02_SuccessfulTokenUnStaking.spec.js +++ b/tests/TC05/TC05-01_SuccessfulTokenUnStaking.spec.js @@ -2,14 +2,16 @@ const { test, expect } = require("@playwright/test"); const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); -test('Test case 2: Successful Token UnStaking', async ({ page }) => { +test('Test case 1: Successful Token UnStaking', async ({ page }) => { - test.setTimeout(5* 60 * 1000); //Extending Test Case timeout to 10 minutes + test.setTimeout( 30* 60 * 1000); //Extending Test Case timeout to 10 minutes await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal await page.click(pageLocators.TokenStaking.User); //Click on the User Tab + await page.waitForTimeout(5000); //wait for button visible + await page.click(pageLocators.UnStakingToken.UnStakeVotes); //Click on UnStake Votes await page.waitForTimeout(30000); //Wait For Complete The Transaction @@ -18,7 +20,7 @@ test('Test case 2: Successful Token UnStaking', async ({ page }) => { const isTextVisible = content.includes(pageLocators.UnStakingToken.TransactionText, { visible: true }); //Verify that text visible on the webpage - console.log(isTextVisible); + console.log(isTextVisible); console.log("The tokens are successfully UnStaked and show up in the Available Balance field.") diff --git a/tests/TC05/TC05-01_SuccessfulTokenWithdrawal.spec.js b/tests/TC05/TC05-02_SuccessfulTokenWithdrawal.spec.js similarity index 73% rename from tests/TC05/TC05-01_SuccessfulTokenWithdrawal.spec.js rename to tests/TC05/TC05-02_SuccessfulTokenWithdrawal.spec.js index 33472c5..ecfe5ee 100644 --- a/tests/TC05/TC05-01_SuccessfulTokenWithdrawal.spec.js +++ b/tests/TC05/TC05-02_SuccessfulTokenWithdrawal.spec.js @@ -3,9 +3,9 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 1: Successful Token Withdrawal', async ({ page }) => { +test('Test case 2: Successful Token Withdrawal', async ({ page }) => { - test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes + test.setTimeout(30* 60 * 1000); //Extending Test Case timeout to 10 minutes await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal @@ -13,7 +13,9 @@ test('Test case 1: Successful Token Withdrawal', async ({ page }) => { await page.click(pageLocators.TokenWithdrawal.Withdraw); //Click On withdrawal Button - await page.click(pageLocators.TokenWithdrawal.UseMax); //Click on the Use Max + //await page.click(pageLocators.TokenWithdrawal.UseMax); //Click on the Use Max + + await page.fill(pageLocators.TokenWithdrawal.Amount, TezosTestData.TokenWithdrawal.Amount); //fill the Amount await page.click(pageLocators.TokenWithdrawal.Submit); //Click On the Submit Button diff --git a/tests/TC05/TC05-03_SuccessfulTokenStaking.spec.js b/tests/TC05/TC05-03_SuccessfulTokenStaking.spec.js index 0a6d13c..a2f0eb7 100644 --- a/tests/TC05/TC05-03_SuccessfulTokenStaking.spec.js +++ b/tests/TC05/TC05-03_SuccessfulTokenStaking.spec.js @@ -2,6 +2,7 @@ const { test, expect } = require("@playwright/test"); const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const path = require('path'); +const { TezosTestData } = require("../CommonFile/TestData"); test('Test case 3: Successful Token Staking', async ({ page }) => { @@ -13,7 +14,9 @@ test('Test case 3: Successful Token Staking', async ({ page }) => { await page.click(pageLocators.TokenStaking.Deposit); //Click on the Deposit Button - await page.click(pageLocators.TokenStaking.UseMax); //Click onn the User Max + // await page.click(pageLocators.TokenStaking.UseMax); //Click onn the User Max + + await page.fill(pageLocators.TokenStaking.PassAmount, TezosTestData.TokenStaking.Amount) // fill the Amount await page.waitForTimeout(2000); //Wait for the type numbers in text box From 6019bdc02edd123085cf4ad8b4dd50f59ab8166e Mon Sep 17 00:00:00 2001 From: w3rahul Date: Wed, 30 Aug 2023 01:10:58 +0530 Subject: [PATCH 05/36] WIP: Test Case - Module TC 02 and further --- tests/CommonFile/Locator.js | 3 +- tests/CommonFile/TestData.js | 1 + tests/TC03/TC03-01_VoteOnProposal.spec.js | 9 ++++-- .../TC03-02_ProposalExecutionandDrop.spec.js | 2 +- tests/TC04/TC04-01_OffChainPoll.spec.js | 6 +++- tests/TC04/TC04-02_VoteonOffChainPoll.spec.js | 2 +- .../TC05-01_SuccessfulTokenUnStaking.spec.js | 29 ++++++++++++------- 7 files changed, 35 insertions(+), 17 deletions(-) diff --git a/tests/CommonFile/Locator.js b/tests/CommonFile/Locator.js index 2d2ec4a..a82597e 100644 --- a/tests/CommonFile/Locator.js +++ b/tests/CommonFile/Locator.js @@ -143,6 +143,7 @@ const pageLocators = { VoteFor: "//span[text()='Vote For']", VoteAgainst: "//span[text()='Vote Against']", UseMax: "//p[text()='Use Max']", + Amount: "//input[@placeholder='0']", Submit: "//span[text()='Submit']", View: "//span[text()='View']", Support: ".MuiGrid-root.MuiGrid-container.MuiGrid-item.MuiGrid-wrap-xs-nowrap.MuiGrid-align-items-xs-baseline.MuiGrid-grid-md-12", @@ -179,7 +180,7 @@ const pageLocators = { HH: "input[placeholder='HH']", MM: "input[placeholder='MM']", CreateProposalButton: "button[class='MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-containedSecondary']", - CreateText: "//div[text()='Proposal created!']", + CreateText: "Proposal created", CloseButton:'.MuiBox-root > .MuiSvgIcon-root', }, diff --git a/tests/CommonFile/TestData.js b/tests/CommonFile/TestData.js index 7ead0b1..6638f1d 100644 --- a/tests/CommonFile/TestData.js +++ b/tests/CommonFile/TestData.js @@ -88,6 +88,7 @@ const TezosTestData = { }, VoteOnProposal: { + Amount: "20000", }, diff --git a/tests/TC03/TC03-01_VoteOnProposal.spec.js b/tests/TC03/TC03-01_VoteOnProposal.spec.js index 8304c9b..f73529a 100644 --- a/tests/TC03/TC03-01_VoteOnProposal.spec.js +++ b/tests/TC03/TC03-01_VoteOnProposal.spec.js @@ -1,7 +1,8 @@ const { test, expect } = require("@playwright/test"); const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); -const path = require('path'); +const { TezosTestData } = require("../CommonFile/TestData"); + test('Test case 1: Vote On On-Chain Proposal ', async ({ page }) => { @@ -9,7 +10,7 @@ test('Test case 1: Vote On On-Chain Proposal ', async ({ page }) => { try { - test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes + test.setTimeout(30 * 60 * 1000); //Extending Test Case timeout to 10 minutes await page.click(pageLocators.VoteOnProposal.VotingCycle); // Click on Running Cycle Status @@ -17,7 +18,9 @@ test('Test case 1: Vote On On-Chain Proposal ', async ({ page }) => { await page.click(pageLocators.VoteOnProposal.VoteFor); //Click on the Vote For Support - await page.click(pageLocators.VoteOnProposal.UseMax); //Click on Use Max + await page.fill(pageLocators.VoteOnProposal.Amount, TezosTestData.VoteOnProposal.Amount); //Fill the amount for proposal + + // await page.click(pageLocators.VoteOnProposal.UseMax); //Click on Use Max await page.click(pageLocators.VoteOnProposal.Submit); //Click on the Submit diff --git a/tests/TC03/TC03-02_ProposalExecutionandDrop.spec.js b/tests/TC03/TC03-02_ProposalExecutionandDrop.spec.js index 14712da..5effc30 100644 --- a/tests/TC03/TC03-02_ProposalExecutionandDrop.spec.js +++ b/tests/TC03/TC03-02_ProposalExecutionandDrop.spec.js @@ -4,7 +4,7 @@ const { pageLocators } = require("../CommonFile/Locator"); test('Test case 2: On-Chain Proposal Execution & Drop', async ({ page }) => { - test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes + test.setTimeout(30 * 60 * 1000); //Extending Test Case timeout to 10 minutes await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal diff --git a/tests/TC04/TC04-01_OffChainPoll.spec.js b/tests/TC04/TC04-01_OffChainPoll.spec.js index 9f8fd73..edfbb3e 100644 --- a/tests/TC04/TC04-01_OffChainPoll.spec.js +++ b/tests/TC04/TC04-01_OffChainPoll.spec.js @@ -35,9 +35,13 @@ test('Test case 1: Off Chain Poll Proposal Creation', async ({ page }) => { await page.click(pageLocators.OffChainPoll.CreateProposalButton); //Click on the Create Proposal Button + await page.waitForTimeout(12000); //Wait for the transaction + const content = await page.content(); //Assume Page + + const isTextVisible = content.includes(pageLocators.OffChainPoll.CreateText, { visible: true }); //Wait for Text Visible on Webpage - await page.waitForSelector(pageLocators.OffChainPoll.CreateText, { visible: true }); //Wait for Text Visible on Webpage + console.log(isTextVisible); //Console the results console.log("The poll is successfully created and the user is redirected to a confirmation page with the details of the newly created poll."); diff --git a/tests/TC04/TC04-02_VoteonOffChainPoll.spec.js b/tests/TC04/TC04-02_VoteonOffChainPoll.spec.js index a1a7356..0bf66c0 100644 --- a/tests/TC04/TC04-02_VoteonOffChainPoll.spec.js +++ b/tests/TC04/TC04-02_VoteonOffChainPoll.spec.js @@ -15,7 +15,7 @@ test('Test case 2: Vote On Off Chain Proposal ', async ({ page }) => { await page.click(pageLocators.VoteOnOffChainPoll.CastYourVote); //Submit Your Votes - await page.waitForTimeout(1000); //wait for CastYourVote + await page.waitForTimeout(12000); //wait for CastYourVote const content = await page.content(); //Assume Page diff --git a/tests/TC05/TC05-01_SuccessfulTokenUnStaking.spec.js b/tests/TC05/TC05-01_SuccessfulTokenUnStaking.spec.js index bc3f62c..643a9cd 100644 --- a/tests/TC05/TC05-01_SuccessfulTokenUnStaking.spec.js +++ b/tests/TC05/TC05-01_SuccessfulTokenUnStaking.spec.js @@ -2,26 +2,35 @@ const { test, expect } = require("@playwright/test"); const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); -test('Test case 1: Successful Token UnStaking', async ({ page }) => { +test('Test case 1: Successful Token UnStaking on Chromium', async ({ page, browserName }) => { + if (browserName !== 'chromium') { + return; + } - test.setTimeout( 30* 60 * 1000); //Extending Test Case timeout to 10 minutes + test.setTimeout(30 * 60 * 1000); //Extending Test Case timeout to 10 minutes - await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal + await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal - await page.click(pageLocators.TokenStaking.User); //Click on the User Tab + await page.click(pageLocators.TokenStaking.User); //Click on the User Tab - await page.waitForTimeout(5000); //wait for button visible + await page.waitForTimeout(5000); //wait for button visible + + try { await page.click(pageLocators.UnStakingToken.UnStakeVotes); //Click on UnStake Votes - await page.waitForTimeout(30000); //Wait For Complete The Transaction + } catch (error) { + console.error("Error: No votes to unstake"); + } + + await page.waitForTimeout(30000); //Wait For Complete The Transaction - const content = await page.content(); //Assume Page + const content = await page.content(); //Assume Page - const isTextVisible = content.includes(pageLocators.UnStakingToken.TransactionText, { visible: true }); //Verify that text visible on the webpage + const isTextVisible = content.includes(pageLocators.UnStakingToken.TransactionText, { visible: true }); //Verify that text visible on the webpage - console.log(isTextVisible); + console.log(isTextVisible); - console.log("The tokens are successfully UnStaked and show up in the Available Balance field.") + console.log("The tokens are successfully UnStaked and show up in the Available Balance field.") }) \ No newline at end of file From e9375460525a6a0bd86e91d2ed25667cf6eee35a Mon Sep 17 00:00:00 2001 From: w3rahul Date: Wed, 30 Aug 2023 18:52:53 +0530 Subject: [PATCH 06/36] WIP: Test Case - Module TC 02 and further --- .github/workflows/Test.yml | 16 +++++++- tests/CommonFile/Locator.js | 36 ++++++++++------- tests/CommonFile/TestData.js | 14 +++---- tests/TC02/TC02-01_ChangeDelegate.spec.js | 39 ------------------- ...spec.js => TC02-01_TransferTokens.spec.js} | 4 +- ...js => TC02-02_ChangeConfiguration.spec.js} | 2 +- tests/TC02/TC02-02_ChangeGuardian.spec.js | 39 ------------------- ...FT.spec.js => TC02-03_TransferNFT.spec.js} | 2 +- ...y.spec.js => TC02-04_EditRegistry.spec.js} | 2 +- ...mbda.spec.js => TC02-05_AddLambda.spec.js} | 2 +- ...a.spec.js => TC02-06_RemoveLambda.spec.js} | 2 +- ....spec.js => TC02-07_ExecuteLambda.spec.js} | 2 +- tests/TC03/TC03-01_VoteOnProposal.spec.js | 8 ++-- tests/TC03/TC03-02_ProposalExecution.spec.js | 33 ++++++++++++++++ .../TC03-02_ProposalExecutionandDrop.spec.js | 30 -------------- tests/TC03/TC03-03_ProposalDrop.spec.js | 36 +++++++++++++++++ .../TC05-01_SuccessfulTokenUnStaking.spec.js | 4 +- .../TC05-03_SuccessfulTokenStaking.spec.js | 2 + 18 files changed, 128 insertions(+), 145 deletions(-) delete mode 100644 tests/TC02/TC02-01_ChangeDelegate.spec.js rename tests/TC02/{TC02-03_TransferTokens.spec.js => TC02-01_TransferTokens.spec.js} (96%) rename tests/TC02/{TC02-04_ChangeConfiguration.spec.js => TC02-02_ChangeConfiguration.spec.js} (96%) delete mode 100644 tests/TC02/TC02-02_ChangeGuardian.spec.js rename tests/TC02/{TC02-05_TransferNFT.spec.js => TC02-03_TransferNFT.spec.js} (94%) rename tests/TC02/{TC02-06_EditRegistry.spec.js => TC02-04_EditRegistry.spec.js} (96%) rename tests/TC02/{TC02-07_AddLambda.spec.js => TC02-05_AddLambda.spec.js} (96%) rename tests/TC02/{TC02-08_RemoveLambda.spec.js => TC02-06_RemoveLambda.spec.js} (96%) rename tests/TC02/{TC02-09_ExecuteLambda.spec.js => TC02-07_ExecuteLambda.spec.js} (97%) create mode 100644 tests/TC03/TC03-02_ProposalExecution.spec.js delete mode 100644 tests/TC03/TC03-02_ProposalExecutionandDrop.spec.js create mode 100644 tests/TC03/TC03-03_ProposalDrop.spec.js diff --git a/.github/workflows/Test.yml b/.github/workflows/Test.yml index e17fe76..fab9b1a 100644 --- a/.github/workflows/Test.yml +++ b/.github/workflows/Test.yml @@ -63,7 +63,19 @@ jobs: with: branch: gh-pages folder: playwright-report # The folder the action should deploy. - target-folder: tests/tc-01/ + target-folder: tests/pr-01/tc-01/ + + - name: TC03 - Run Playwright tests + run: npm run test:tc03 + env: + WEBAPP_URL: ${{ vars.WEBAPP_URL }} + + - name: TC03 - Deploy Report for TC 03πŸš€ + uses: JamesIves/github-pages-deploy-action@v4 + with: + branch: gh-pages + folder: playwright-report # The folder the action should deploy. + target-folder: tests/pr-01/tc-03/ - name: TC04 - Run Playwright tests run: npm run test:tc04 @@ -87,4 +99,4 @@ jobs: with: branch: gh-pages folder: playwright-report # The folder the action should deploy. - target-folder: tests/pr-01/tc-05/ \ No newline at end of file + target-folder: tests/pr-01/tc-05/ diff --git a/tests/CommonFile/Locator.js b/tests/CommonFile/Locator.js index a82597e..b6b69bc 100644 --- a/tests/CommonFile/Locator.js +++ b/tests/CommonFile/Locator.js @@ -1,8 +1,8 @@ const pageLocators = { TokenCreator: { - MainNet:"//p[text()='Mainnet']", - GhostNet:"//h6[text()='Ghostnet']", + MainNet: "//p[text()='Mainnet']", + GhostNet: "//h6[text()='Ghostnet']", EnterApp: ".MuiButtonBase-root.MuiButton-root.MuiButton-contained.jss11.jss12.MuiButton-containedSecondary", frame: "div.MuiGrid-root.MuiGrid-container.MuiGrid-align-items-xs-center.MuiGrid-justify-content-xs-center", ConnectWallet: "//span[text()='Connect Wallet']", @@ -44,16 +44,16 @@ const pageLocators = { ThresholdExpiryDays: "//input[@name='proposalExpiryBlocksDay']", ThresholdExpiryHours: "//input[@name='proposalExpiryBlocksHours']", ThresholdExpiryMinutes: "//input[@name='proposalExpiryBlocksMinutes']", - Slider:"span[role='slider']", + Slider: "span[role='slider']", RequireStake: "//input[@name='proposeStakeRequired']", MinAmount: "//input[@name='minXtzAmount']", MaxAmount: "//input[@name='maxXtzAmount']", ContinueButton3: "//p[text()='Continue']", - QuorumThreshold:"//input[@name='quorumThreshold']", - QuorumChange:"//input[@name='quorumChange']", - MinQuorumAmount:"//input[@name='minQuorumAmount']", - QuorumMaxChange:"//input[@name='quorumMaxChange']", - MaxQuorumAmount:"//input[@name='maxQuorumAmount']", + QuorumThreshold: "//input[@name='quorumThreshold']", + QuorumChange: "//input[@name='quorumChange']", + MinQuorumAmount: "//input[@name='minQuorumAmount']", + QuorumMaxChange: "//input[@name='quorumMaxChange']", + MaxQuorumAmount: "//input[@name='maxQuorumAmount']", ContinueButton4: "//p[text()='Continue']", ContinueButton5: "//p[text()='Continue']", SelfDeployed: " //p[text()='Self-Deployed']", @@ -123,7 +123,7 @@ const pageLocators = { RemoveLambda: "//p[text()='Remove Lambda']", SearchBox: "#combo-box-demo", SubmitButton: "//span[text()='Submit']", - TransactionText:"", + TransactionText: "", }, ExecuteLambda: { @@ -132,7 +132,7 @@ const pageLocators = { LambdaArgumentsCode: 'Write Michelson Code for the input Paramerers of your Lambda\n\nEg:-\n\n{\n "prim": "pair",\n "annots": [\n "%xtz_transfer_type"\n ],\n "args": [\n {\n "prim": "mutez",\n "annots": [\n "%amount"\n ]\n },\n {\n "prim": "address",\n "annots": [\n "%recipient"\n ]\n }\n ]\n},\n', LambdaParams: 'Enter the values for the given params in a JSON/JavaScript Object format.\n\nEg:-\n\n{\n xtz_transfer_type: {\n amount: 10000000000000000000,\n recipient: "tz1VSUr8wwNhLAzempoch5d6hLRiTh8Cjcjb"\n }\n}\n ', SubmitButton: "//span[text()='Submit']", - TransactionText:"", + TransactionText: "", }, VoteOnProposal: { @@ -143,7 +143,7 @@ const pageLocators = { VoteFor: "//span[text()='Vote For']", VoteAgainst: "//span[text()='Vote Against']", UseMax: "//p[text()='Use Max']", - Amount: "//input[@placeholder='0']", + Amount: "//input[@placeholder='Type an Amount']", Submit: "//span[text()='Submit']", View: "//span[text()='View']", Support: ".MuiGrid-root.MuiGrid-container.MuiGrid-item.MuiGrid-wrap-xs-nowrap.MuiGrid-align-items-xs-baseline.MuiGrid-grid-md-12", @@ -151,7 +151,12 @@ const pageLocators = { }, - ProposalExecutionAndDrop: { + ProposalDrop: { + ProposalDrop: "//span[text()='Drop Proposal']", + TransactionText: "Drop proposal transaction confirmed", + }, + + ProposalExecution: { PassedExecutable: "//p[text()='Passed - Executable']", Passed: "//p[text()='Passed']", NoQuorum: "//p[text()='No Quorum']", @@ -160,6 +165,7 @@ const pageLocators = { PercentageText: "//p[@class='MuiTypography-root jss1339 jss1340 MuiTypography-body1']", DropExpired: "//span[text()='Drop Expired']", Execute: "//span[text()='Execute']", + TransactionText: "", }, OffChainPoll: { @@ -181,7 +187,7 @@ const pageLocators = { MM: "input[placeholder='MM']", CreateProposalButton: "button[class='MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-containedSecondary']", CreateText: "Proposal created", - CloseButton:'.MuiBox-root > .MuiSvgIcon-root', + CloseButton: '.MuiBox-root > .MuiSvgIcon-root', }, VoteOnOffChainPoll: { @@ -195,7 +201,7 @@ const pageLocators = { CorrectVoteCount: { VoteCount: "div[class='MuiGrid-root MuiGrid-container MuiGrid-item MuiGrid-grid-xs-12 MuiGrid-grid-sm-6 MuiGrid-grid-md-6 MuiGrid-grid-lg-6'] p[class='MuiTypography-root MuiTypography-body1 MuiTypography-colorSecondary']", Options: "//div[@class='MuiGrid-root MuiGrid-container MuiGrid-item MuiGrid-justify-content-xs-flex-end MuiGrid-grid-xs-12 MuiGrid-grid-sm-6 MuiGrid-grid-lg-6']", - + }, @@ -206,7 +212,7 @@ const pageLocators = { UseMax: "//p[text()='Use Max']", Submit: "//span[text()='Submit']", TransactionText: "Deposit transaction confirmed", - Balance:"//div[@class='MuiGrid-root MuiGrid-container MuiGrid-item MuiGrid-justify-content-xs-space-between']", + Balance: "//div[@class='MuiGrid-root MuiGrid-container MuiGrid-item MuiGrid-justify-content-xs-space-between']", }, UnStakingToken: { diff --git a/tests/CommonFile/TestData.js b/tests/CommonFile/TestData.js index 6638f1d..53b4708 100644 --- a/tests/CommonFile/TestData.js +++ b/tests/CommonFile/TestData.js @@ -13,7 +13,7 @@ const TezosTestData = { }, DAOCreate: { - DAOName: "Decentralized", + DAOName: "Carbon black", TokenAddress: "KT1Dmxer8pvx8vTUX5V2k44th4DqnKsjhUya", TokenID: "0", GuardianAddress: "tz1LCFwczMiEuNHcMvpqgNzzEs8f4FNBgyNK", @@ -46,16 +46,16 @@ const TezosTestData = { }, ChangeGuardian: { - WalletAddress: "tz1VSUr8wwNhLAzempoch5d6hLRiTh8Cjcjb", + WalletAddress: "tz1RXo8kLmLZDfnuAyGD2vCAZWGcCsziR4HX", }, ChangeDelegate: { - NewDelegateAddress: "tz1VxgGHwU6T6MaWrzfCBSpg2tw823KWVbk6", + NewDelegateAddress: "tz1RXo8kLmLZDfnuAyGD2vCAZWGcCsziR4HX", }, TransferToken: { - RecipientAddress: "tz1VxgGHwU6T6MaWrzfCBSpg2tw823KWVbk6", + RecipientAddress: "tz1RXo8kLmLZDfnuAyGD2vCAZWGcCsziR4HX", Asset: "$", Amount: "10", AgoraPostID: "10", @@ -72,7 +72,7 @@ const TezosTestData = { }, AddLambda: { - MichelsonCode: ".npm__react-simple-code-editor__textarea", + MichelsonCode: "update_guardian_proposal", }, @@ -88,7 +88,7 @@ const TezosTestData = { }, VoteOnProposal: { - Amount: "20000", + Amount: "30000", }, @@ -99,7 +99,7 @@ const TezosTestData = { OffChainPoll: { - ProposalTitle: 'Community', + ProposalTitle: 'governance', ShortDescription: "This proposal aims to conduct an off-chain poll to gather community input on potential upgrades to the Tezos governance process.", ExternalLink: "https://tezos-gov-upgrades.com", Choice1: "Democracy", diff --git a/tests/TC02/TC02-01_ChangeDelegate.spec.js b/tests/TC02/TC02-01_ChangeDelegate.spec.js deleted file mode 100644 index ee50500..0000000 --- a/tests/TC02/TC02-01_ChangeDelegate.spec.js +++ /dev/null @@ -1,39 +0,0 @@ -const { test, expect } = require("@playwright/test"); -const { PreProposal } = require("../CommonFile/PreAction"); -const { pageLocators } = require("../CommonFile/Locator"); -const { TezosTestData } = require("../CommonFile/TestData"); - -test('Test case 1: Change Delegate', async ({ page }) => { - - await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal - - try { - - test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes - - await page.click(pageLocators.OffChainPoll.cycle); // Click on Running Cycle Status - - await page.click(pageLocators.OffChainPoll.NewProposal); //Click on new Proposal - - await page.click(pageLocators.ChangeDelegate.ChangeDelegate); //Click on Change Delegate - - await page.fill(pageLocators.ChangeDelegate.NewDelegateAddress, TezosTestData.ChangeDelegate.NewDelegateAddress); //New Delegate Address - - await page.click(pageLocators.ChangeDelegate.SubmitButton); //Click on Submit button - - await page.waitForTimeout(30000); //Wait For Timeout - - const content = await page.content(); //Assume Page - - const isTextVisible = content.includes(pageLocators.ChangeDelegate.TransactionText, { visible: true }); //Verify that text visible on the webpage - - console.log(isTextVisible); //Prints True or false for is Text Visible - - console.log("The proposal is successfully created and the user is redirected to a confirmation page with the details of the newly created proposal."); - - } - catch (error) { - console.log("Now Voting Cycle is running"); - } - -}) \ No newline at end of file diff --git a/tests/TC02/TC02-03_TransferTokens.spec.js b/tests/TC02/TC02-01_TransferTokens.spec.js similarity index 96% rename from tests/TC02/TC02-03_TransferTokens.spec.js rename to tests/TC02/TC02-01_TransferTokens.spec.js index 77c09c1..680ed6a 100644 --- a/tests/TC02/TC02-03_TransferTokens.spec.js +++ b/tests/TC02/TC02-01_TransferTokens.spec.js @@ -3,7 +3,7 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 3: Transfer Tokens', async ({ page }) => { +test('Test case 1: Transfer Tokens', async ({ page }) => { await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal @@ -23,7 +23,7 @@ test('Test case 3: Transfer Tokens', async ({ page }) => { await page.waitForTimeout(2000) //Wait For Locate The Token - await page.keyboard.press('ArrowDown'); //Click on DownArrow Button + await page.keyboard.press('ArrowDown'); //Click on DownArrow Button await page.keyboard.press('Enter'); //Click on Enter Button diff --git a/tests/TC02/TC02-04_ChangeConfiguration.spec.js b/tests/TC02/TC02-02_ChangeConfiguration.spec.js similarity index 96% rename from tests/TC02/TC02-04_ChangeConfiguration.spec.js rename to tests/TC02/TC02-02_ChangeConfiguration.spec.js index 0bb0665..7aa9f84 100644 --- a/tests/TC02/TC02-04_ChangeConfiguration.spec.js +++ b/tests/TC02/TC02-02_ChangeConfiguration.spec.js @@ -3,7 +3,7 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 4: Change Configuration', async ({ page }) => { +test('Test case 2: Change Configuration', async ({ page }) => { await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal diff --git a/tests/TC02/TC02-02_ChangeGuardian.spec.js b/tests/TC02/TC02-02_ChangeGuardian.spec.js deleted file mode 100644 index 59ec06d..0000000 --- a/tests/TC02/TC02-02_ChangeGuardian.spec.js +++ /dev/null @@ -1,39 +0,0 @@ -const { test, expect } = require("@playwright/test"); -const { PreProposal } = require("../CommonFile/PreAction"); -const { pageLocators } = require("../CommonFile/Locator"); -const { TezosTestData } = require("../CommonFile/TestData"); - -test('Test case 2: Change Guardian', async ({ page }) => { - - await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal - - try { - - test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes - - await page.click(pageLocators.OffChainPoll.cycle); // Click on Running Cycle Status - - await page.click(pageLocators.OffChainPoll.NewProposal); //Click on new Proposal - - await page.click(pageLocators.ChangeGuardian.ChangeGuardian); //Click on Change Guardian - - await page.fill(pageLocators.ChangeGuardian.WalletAddress, TezosTestData.ChangeGuardian.WalletAddress); //Pass The Wallet Address - - await page.click(pageLocators.ChangeGuardian.SubmitButton); //Click on Submit button - - await page.waitForTimeout(30000); //Wait for TimeOut Submit the proposal - - const content = await page.content(); //Assume Page - - const isTextVisible = content.includes(pageLocators.ChangeGuardian.TransactionText, { visible: true }); //Verify that text visible on the webpage - - console.log(isTextVisible); //Prints True or false for is Text Visible - - console.log(" The proposal is successfully created and the user is redirected to a confirmation page with the details of the newly created proposal."); - - } - catch (error) { - console.log("Now Voting Cycle is running"); - } - -}) \ No newline at end of file diff --git a/tests/TC02/TC02-05_TransferNFT.spec.js b/tests/TC02/TC02-03_TransferNFT.spec.js similarity index 94% rename from tests/TC02/TC02-05_TransferNFT.spec.js rename to tests/TC02/TC02-03_TransferNFT.spec.js index 14586b7..a0458be 100644 --- a/tests/TC02/TC02-05_TransferNFT.spec.js +++ b/tests/TC02/TC02-03_TransferNFT.spec.js @@ -4,7 +4,7 @@ const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); const path = require('path'); -test('Test case 5: Transfer NFT ', async ({ page }) => { +test('Test case 3: Transfer NFT ', async ({ page }) => { await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal diff --git a/tests/TC02/TC02-06_EditRegistry.spec.js b/tests/TC02/TC02-04_EditRegistry.spec.js similarity index 96% rename from tests/TC02/TC02-06_EditRegistry.spec.js rename to tests/TC02/TC02-04_EditRegistry.spec.js index 934fb7d..150005f 100644 --- a/tests/TC02/TC02-06_EditRegistry.spec.js +++ b/tests/TC02/TC02-04_EditRegistry.spec.js @@ -3,7 +3,7 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 6: Edit Registry', async ({ page }) => { +test('Test case 4: Edit Registry', async ({ page }) => { await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal diff --git a/tests/TC02/TC02-07_AddLambda.spec.js b/tests/TC02/TC02-05_AddLambda.spec.js similarity index 96% rename from tests/TC02/TC02-07_AddLambda.spec.js rename to tests/TC02/TC02-05_AddLambda.spec.js index 8aedc7c..0945965 100644 --- a/tests/TC02/TC02-07_AddLambda.spec.js +++ b/tests/TC02/TC02-05_AddLambda.spec.js @@ -3,7 +3,7 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 7: Add Lambda ', async ({ page }) => { +test('Test case 5: Add Lambda ', async ({ page }) => { await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal diff --git a/tests/TC02/TC02-08_RemoveLambda.spec.js b/tests/TC02/TC02-06_RemoveLambda.spec.js similarity index 96% rename from tests/TC02/TC02-08_RemoveLambda.spec.js rename to tests/TC02/TC02-06_RemoveLambda.spec.js index d033ed2..f152572 100644 --- a/tests/TC02/TC02-08_RemoveLambda.spec.js +++ b/tests/TC02/TC02-06_RemoveLambda.spec.js @@ -3,7 +3,7 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 8: Remove Lambda ', async ({ page }) => { +test('Test case 6: Remove Lambda ', async ({ page }) => { await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal diff --git a/tests/TC02/TC02-09_ExecuteLambda.spec.js b/tests/TC02/TC02-07_ExecuteLambda.spec.js similarity index 97% rename from tests/TC02/TC02-09_ExecuteLambda.spec.js rename to tests/TC02/TC02-07_ExecuteLambda.spec.js index 1bc089d..f02c9d0 100644 --- a/tests/TC02/TC02-09_ExecuteLambda.spec.js +++ b/tests/TC02/TC02-07_ExecuteLambda.spec.js @@ -3,7 +3,7 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 9: Execute Lambda ', async ({ page }) => { +test('Test case 7: Execute Lambda ', async ({ page }) => { await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal diff --git a/tests/TC03/TC03-01_VoteOnProposal.spec.js b/tests/TC03/TC03-01_VoteOnProposal.spec.js index f73529a..05a21da 100644 --- a/tests/TC03/TC03-01_VoteOnProposal.spec.js +++ b/tests/TC03/TC03-01_VoteOnProposal.spec.js @@ -4,13 +4,15 @@ const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 1: Vote On On-Chain Proposal ', async ({ page }) => { - +test('Test case 1: Vote On On-Chain Proposal ', async ({ page, browserName }) => { + if (browserName !== 'chromium') { + return; + } await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal try { - test.setTimeout(30 * 60 * 1000); //Extending Test Case timeout to 10 minutes + test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes await page.click(pageLocators.VoteOnProposal.VotingCycle); // Click on Running Cycle Status diff --git a/tests/TC03/TC03-02_ProposalExecution.spec.js b/tests/TC03/TC03-02_ProposalExecution.spec.js new file mode 100644 index 0000000..64ea91f --- /dev/null +++ b/tests/TC03/TC03-02_ProposalExecution.spec.js @@ -0,0 +1,33 @@ +const { test, expect } = require("@playwright/test"); +const { PreProposal } = require("../CommonFile/PreAction"); +const { pageLocators } = require("../CommonFile/Locator"); + +test('Test case 2: On-Chain Proposal Execution & Drop', async ({ page, browserName }) => { + if (browserName !== 'chromium') { + return; + } + + test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes + + await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal + + try { + + await page.click(pageLocators.OffChainPoll.cycle); // Click on Running Cycle Status + + await page.waitForSelector(pageLocators.ProposalExecution.Execute, { click: true }) //Validate That Button is clickable or not + + await page.click(pageLocators.ProposalExecution.Execute); //Click on Execute Button + + const content = await page.content(); //Assume Page + + const isTextVisible = content.includes(pageLocators.ProposalExecution.TransactionText, { visible: true }); //Verify that text visible on the webpage + + console.log(isTextVisible); //Prints True or false for is Text Visible + + } + catch (error) { + console.log("Error: No Passed- Executable Proposals"); + } + +}) \ No newline at end of file diff --git a/tests/TC03/TC03-02_ProposalExecutionandDrop.spec.js b/tests/TC03/TC03-02_ProposalExecutionandDrop.spec.js deleted file mode 100644 index 5effc30..0000000 --- a/tests/TC03/TC03-02_ProposalExecutionandDrop.spec.js +++ /dev/null @@ -1,30 +0,0 @@ -const { test, expect } = require("@playwright/test"); -const { PreProposal } = require("../CommonFile/PreAction"); -const { pageLocators } = require("../CommonFile/Locator"); - -test('Test case 2: On-Chain Proposal Execution & Drop', async ({ page }) => { - - test.setTimeout(30 * 60 * 1000); //Extending Test Case timeout to 10 minutes - - await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal - - try { - - await page.click(pageLocators.OffChainPoll.cycle); // Click on Running Cycle Status - - if (await page.waitForLoadState(pageLocators.ProposalExecutionAndDrop.PassedExecutable)) { //Click on the Passed - Execute able - - if (await page.waitForSelector(pageLocators.ProposalExecutionAndDrop.Execute, { click: true })) { //Validate That Button is clickable or not - - await page.click(pageLocators.ProposalExecutionAndDrop.Execute); //Click on Execute Button - } - } else { - await page.click(pageLocators.ProposalExecutionAndDrop.DropExpired); //Click on drop Expired Proposal - } - - } - catch (error) { - console.log("Error"); - } - -}) \ No newline at end of file diff --git a/tests/TC03/TC03-03_ProposalDrop.spec.js b/tests/TC03/TC03-03_ProposalDrop.spec.js new file mode 100644 index 0000000..c6a4281 --- /dev/null +++ b/tests/TC03/TC03-03_ProposalDrop.spec.js @@ -0,0 +1,36 @@ +const { test, expect } = require("@playwright/test"); +const { PreProposal } = require("../CommonFile/PreAction"); +const { pageLocators } = require("../CommonFile/Locator"); +const { TezosTestData } = require("../CommonFile/TestData"); + + +test('Test case 3: Drop the Active proposal', async ({ page, browserName }) => { + if (browserName !== 'chromium') { + return; + } + await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal + + try { + + test.setTimeout( 10* 60 * 1000); //Extending Test Case timeout to 10 minutes + + await page.click(pageLocators.VoteOnProposal.VotingCycle); // Click on Running Cycle Status + + await page.click(pageLocators.VoteOnProposal.Active); //Click on the Active Button + + await page.click(pageLocators.ProposalDrop.ProposalDrop); //Click on the Drop Proposal + + await page.waitForTimeout(30000); //wait for the transaction + + const content = await page.content(); //Assume Page + + const isTextVisible = content.includes(pageLocators.ProposalDrop.TransactionText, { visible: true }); //Verify that text visible on the webpage + + console.log(isTextVisible); //Prints True or false for is Text Visible + + } + catch (error) { + console.log("Now Creating Cycle is running"); + } + +}) \ No newline at end of file diff --git a/tests/TC05/TC05-01_SuccessfulTokenUnStaking.spec.js b/tests/TC05/TC05-01_SuccessfulTokenUnStaking.spec.js index 643a9cd..17680a7 100644 --- a/tests/TC05/TC05-01_SuccessfulTokenUnStaking.spec.js +++ b/tests/TC05/TC05-01_SuccessfulTokenUnStaking.spec.js @@ -7,7 +7,7 @@ test('Test case 1: Successful Token UnStaking on Chromium', async ({ page, brows return; } - test.setTimeout(30 * 60 * 1000); //Extending Test Case timeout to 10 minutes + test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal @@ -23,7 +23,7 @@ test('Test case 1: Successful Token UnStaking on Chromium', async ({ page, brows console.error("Error: No votes to unstake"); } - await page.waitForTimeout(30000); //Wait For Complete The Transaction + await page.waitForTimeout(3000); //Wait For Complete The Transaction const content = await page.content(); //Assume Page diff --git a/tests/TC05/TC05-03_SuccessfulTokenStaking.spec.js b/tests/TC05/TC05-03_SuccessfulTokenStaking.spec.js index a2f0eb7..abe258c 100644 --- a/tests/TC05/TC05-03_SuccessfulTokenStaking.spec.js +++ b/tests/TC05/TC05-03_SuccessfulTokenStaking.spec.js @@ -28,6 +28,8 @@ test('Test case 3: Successful Token Staking', async ({ page }) => { const isTextVisible = content.includes(pageLocators.TokenStaking.TransactionText, { visible: true }); //Verify that text visible on the webpage + console.log(isTextVisible); //Console the results of Text + console.log("The tokens are successfully staked and and show up as available balance field"); }) \ No newline at end of file From 15a70be69f4a17f0aa3a598a013f3ba236bbf2ce Mon Sep 17 00:00:00 2001 From: w3rahul Date: Sat, 2 Sep 2023 23:18:15 +0530 Subject: [PATCH 07/36] WIP: Test Case - Module TC 05 and further --- .github/workflows/Test.yml | 24 + package-lock.json | 494 +++++++++++++++++- package.json | 2 + tests/CommonFile/Locator.js | 4 +- tests/CommonFile/TestData.js | 57 +- tests/TC02/TC02-08_ChangeDelegate.spec.js | 39 ++ tests/TC02/TC02-09_ChangeGuardian.spec.js | 39 ++ ...p.spec.js => TC03-02_ProposalDrop.spec.js} | 2 +- ...TC05-01_SuccessfulTokenWithdrawal.spec.js} | 2 +- ...=> TC05-02_SuccessfulTokenStaking.spec.js} | 2 +- .../TC06-01ProposalExecution.spec.js} | 2 +- .../TC06-02_SuccessfulTokenUnStaking.spec.js} | 2 +- 12 files changed, 628 insertions(+), 41 deletions(-) create mode 100644 tests/TC02/TC02-08_ChangeDelegate.spec.js create mode 100644 tests/TC02/TC02-09_ChangeGuardian.spec.js rename tests/TC03/{TC03-03_ProposalDrop.spec.js => TC03-02_ProposalDrop.spec.js} (95%) rename tests/TC05/{TC05-02_SuccessfulTokenWithdrawal.spec.js => TC05-01_SuccessfulTokenWithdrawal.spec.js} (95%) rename tests/TC05/{TC05-03_SuccessfulTokenStaking.spec.js => TC05-02_SuccessfulTokenStaking.spec.js} (95%) rename tests/{TC03/TC03-02_ProposalExecution.spec.js => TC06/TC06-01ProposalExecution.spec.js} (92%) rename tests/{TC05/TC05-01_SuccessfulTokenUnStaking.spec.js => TC06/TC06-02_SuccessfulTokenUnStaking.spec.js} (94%) diff --git a/.github/workflows/Test.yml b/.github/workflows/Test.yml index fab9b1a..92114d8 100644 --- a/.github/workflows/Test.yml +++ b/.github/workflows/Test.yml @@ -65,6 +65,18 @@ jobs: folder: playwright-report # The folder the action should deploy. target-folder: tests/pr-01/tc-01/ + - name: TC02 - Run Playwright tests + run: npm run test:tc02 + env: + WEBAPP_URL: ${{ vars.WEBAPP_URL }} + + - name: TC02 - Deploy Report for TC 02πŸš€ + uses: JamesIves/github-pages-deploy-action@v4 + with: + branch: gh-pages + folder: playwright-report # The folder the action should deploy. + target-folder: tests/pr-01/tc-02/ + - name: TC03 - Run Playwright tests run: npm run test:tc03 env: @@ -100,3 +112,15 @@ jobs: branch: gh-pages folder: playwright-report # The folder the action should deploy. target-folder: tests/pr-01/tc-05/ + + - name: TC06 - Run Playwright tests + run: npm run test:tc06 + env: + WEBAPP_URL: ${{ vars.WEBAPP_URL }} + + - name: TC06 - Deploy Report for TC 06πŸš€ + uses: JamesIves/github-pages-deploy-action@v4 + with: + branch: gh-pages + folder: playwright-report # The folder the action should deploy. + target-folder: tests/pr-01/tc-06/ \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index ef1757a..8ea6430 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "@taquito/taquito": "^17.3.0", "aws-sdk": "^2.1419.0", "dotenv": "^16.3.1" }, @@ -48,11 +49,234 @@ "node": ">=16" } }, + "node_modules/@stablelib/binary": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/binary/-/binary-1.0.1.tgz", + "integrity": "sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==", + "dependencies": { + "@stablelib/int": "^1.0.1" + } + }, + "node_modules/@stablelib/blake2b": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/blake2b/-/blake2b-1.0.1.tgz", + "integrity": "sha512-B3KyKoBAjkIFeH7romcF96i+pVFYk7K2SBQ1pZvaxV+epSBXJ+n0C66esUhyz6FF+5FbdQVm77C5fzGFcEZpKA==", + "dependencies": { + "@stablelib/binary": "^1.0.1", + "@stablelib/hash": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "node_modules/@stablelib/ed25519": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@stablelib/ed25519/-/ed25519-1.0.3.tgz", + "integrity": "sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==", + "dependencies": { + "@stablelib/random": "^1.0.2", + "@stablelib/sha512": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "node_modules/@stablelib/hash": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/hash/-/hash-1.0.1.tgz", + "integrity": "sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==" + }, + "node_modules/@stablelib/int": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/int/-/int-1.0.1.tgz", + "integrity": "sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==" + }, + "node_modules/@stablelib/random": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@stablelib/random/-/random-1.0.2.tgz", + "integrity": "sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==", + "dependencies": { + "@stablelib/binary": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "node_modules/@stablelib/sha512": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/sha512/-/sha512-1.0.1.tgz", + "integrity": "sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==", + "dependencies": { + "@stablelib/binary": "^1.0.1", + "@stablelib/hash": "^1.0.1", + "@stablelib/wipe": "^1.0.1" + } + }, + "node_modules/@stablelib/wipe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@stablelib/wipe/-/wipe-1.0.1.tgz", + "integrity": "sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==" + }, + "node_modules/@taquito/core": { + "version": "17.3.0", + "resolved": "https://registry.npmjs.org/@taquito/core/-/core-17.3.0.tgz", + "integrity": "sha512-worh4CMAue4GqLZeJOB1PwIHZ+LH+RmHxfRuSD/c0VoAbuJUVkdRu+uLgGyx+hdIKUeyAxe2g41c50VSMYF3Zw==", + "engines": { + "node": ">=16" + } + }, + "node_modules/@taquito/http-utils": { + "version": "17.3.0", + "resolved": "https://registry.npmjs.org/@taquito/http-utils/-/http-utils-17.3.0.tgz", + "integrity": "sha512-jUclvXppsIExn93PSrEsW5IkrsP11V9D5DWfqFne5uwt5GAaJBlaSYBJKo4vyfE9EGmZ+MQWs0X/MbTT625FgA==", + "dependencies": { + "@taquito/core": "^17.3.0", + "axios": "0.26.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@taquito/local-forging": { + "version": "17.3.0", + "resolved": "https://registry.npmjs.org/@taquito/local-forging/-/local-forging-17.3.0.tgz", + "integrity": "sha512-Y/4Yl2RBvE7UhgZ1GNj6LlJFgfqtgtNNbZ9zJEqbUBuxpwC/i0ZP5UlOwInbwFS9081vrWgLkj3JNyvC7KP2Kg==", + "dependencies": { + "@taquito/core": "^17.3.0", + "@taquito/utils": "^17.3.0", + "bignumber.js": "^9.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@taquito/michel-codec": { + "version": "17.3.0", + "resolved": "https://registry.npmjs.org/@taquito/michel-codec/-/michel-codec-17.3.0.tgz", + "integrity": "sha512-svct6iY1VnwFUlJaj6LX6kcuTqQ0nCiZ+DcTmsZAG6HcCP3gcEPxf02pbZl2zyqJbNpeKt4Q9EDaxBapBW2G5Q==", + "dependencies": { + "@taquito/core": "^17.3.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@taquito/michelson-encoder": { + "version": "17.3.0", + "resolved": "https://registry.npmjs.org/@taquito/michelson-encoder/-/michelson-encoder-17.3.0.tgz", + "integrity": "sha512-XFvAGdnwpH0TF8liNiuE5COdvBFh5VmyN8WullRvwxlUcxLvQYS+MAfJjbk7WuSv4k31gQPc9r7O3G4m0AbPlA==", + "dependencies": { + "@taquito/rpc": "^17.3.0", + "@taquito/utils": "^17.3.0", + "bignumber.js": "^9.1.0", + "fast-json-stable-stringify": "^2.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@taquito/rpc": { + "version": "17.3.0", + "resolved": "https://registry.npmjs.org/@taquito/rpc/-/rpc-17.3.0.tgz", + "integrity": "sha512-xZkTS3BhAe/9Bo8Q7o5LLsMYkv5R+g33gp2Fm/drmpyFmepk1QCj94fEvIUSb/7CcOJxr3dnPXTPh1hpi8zp+w==", + "dependencies": { + "@taquito/core": "^17.3.0", + "@taquito/http-utils": "^17.3.0", + "@taquito/utils": "^17.3.0", + "bignumber.js": "^9.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@taquito/taquito": { + "version": "17.3.0", + "resolved": "https://registry.npmjs.org/@taquito/taquito/-/taquito-17.3.0.tgz", + "integrity": "sha512-AODy23a398LWx2k7gIFxHrJHe8BzLsvxCBR9eTIOH1qhhCiKf9oEEJR6Ymj9rAXnp3RoZRt/orQ7ylqB0NrXnA==", + "hasInstallScript": true, + "dependencies": { + "@taquito/core": "^17.3.0", + "@taquito/http-utils": "^17.3.0", + "@taquito/local-forging": "^17.3.0", + "@taquito/michel-codec": "^17.3.0", + "@taquito/michelson-encoder": "^17.3.0", + "@taquito/rpc": "^17.3.0", + "@taquito/utils": "^17.3.0", + "bignumber.js": "^9.1.0", + "rxjs": "^7.8.1" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@taquito/utils": { + "version": "17.3.0", + "resolved": "https://registry.npmjs.org/@taquito/utils/-/utils-17.3.0.tgz", + "integrity": "sha512-e1MdHDdDcK473bdi/zLtBV91b/7SUx/j0kwKXgPt04hbKX+/Nu1mJSviExFE/GXgxFvB6iufDui45Ui8jcYKtg==", + "dependencies": { + "@stablelib/blake2b": "^1.0.1", + "@stablelib/ed25519": "^1.0.3", + "@taquito/core": "^17.3.0", + "@types/bs58check": "^2.1.0", + "bignumber.js": "^9.1.0", + "blakejs": "^1.2.1", + "bs58check": "^2.1.2", + "buffer": "^6.0.3", + "elliptic": "^6.5.4", + "typedarray-to-buffer": "^4.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@taquito/utils/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@taquito/utils/node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/@types/bs58check": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/bs58check/-/bs58check-2.1.0.tgz", + "integrity": "sha512-OxsysnJQh82vy9DRbOcw9m2j/WiyqZLn0YBhKxdQ+aCwoHj+tWzyCgpwAkr79IfDXZKxc6h7k89T9pwS78CqTQ==", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/node": { "version": "20.4.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.0.tgz", - "integrity": "sha512-jfT7iTf/4kOQ9S7CHV9BIyRaQqHu67mOjsIQBC3BKZvzvUB6zLxEwJ6sBE3ozcvP8kF6Uk5PXN0Q+c0dfhGX0g==", - "dev": true + "integrity": "sha512-jfT7iTf/4kOQ9S7CHV9BIyRaQqHu67mOjsIQBC3BKZvzvUB6zLxEwJ6sBE3ozcvP8kF6Uk5PXN0Q+c0dfhGX0g==" }, "node_modules/available-typed-arrays": { "version": "1.0.5", @@ -85,6 +309,22 @@ "node": ">= 10.0.0" } }, + "node_modules/axios": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.0.tgz", + "integrity": "sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==", + "dependencies": { + "follow-redirects": "^1.14.8" + } + }, + "node_modules/base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -104,6 +344,47 @@ } ] }, + "node_modules/bignumber.js": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "engines": { + "node": "*" + } + }, + "node_modules/blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" + }, + "node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + }, + "node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, "node_modules/buffer": { "version": "4.9.2", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", @@ -126,6 +407,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, "node_modules/dotenv": { "version": "16.3.1", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", @@ -137,6 +439,20 @@ "url": "https://github.com/motdotla/dotenv?sponsor=1" } }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, "node_modules/events": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", @@ -145,6 +461,30 @@ "node": ">=0.4.x" } }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -244,6 +584,38 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, "node_modules/ieee754": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", @@ -321,6 +693,26 @@ "node": ">= 0.6.0" } }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + }, "node_modules/playwright": { "version": "1.35.1", "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.35.1.tgz", @@ -363,11 +755,104 @@ "node": ">=0.4.x" } }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/sax": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==" }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/typedarray-to-buffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-4.0.0.tgz", + "integrity": "sha512-6dOYeZfS3O9RtRD1caom0sMxgK59b27+IwoNy8RDPsmslSGOyU+mpTamlaIW7aNKi90ZQZ9DFaZL3YRoiSCULQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/url": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", @@ -389,6 +874,11 @@ "which-typed-array": "^1.1.2" } }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, "node_modules/uuid": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", diff --git a/package.json b/package.json index 41a6e44..8a97265 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "test:tc03": "playwright test tests/TC03", "test:tc04": "playwright test tests/TC04", "test:tc05": "playwright test tests/TC05", + "test:tc06": "playwright test tests/TC06", "dev": "node --inspect-brk ./node_modules/@playwright/test/cli.js test TC04DAOValues.spec.js --project=chromium --headed" }, "keywords": [], @@ -20,6 +21,7 @@ "playwright": "^1.35.1" }, "dependencies": { + "@taquito/taquito": "^17.3.0", "aws-sdk": "^2.1419.0", "dotenv": "^16.3.1" }, diff --git a/tests/CommonFile/Locator.js b/tests/CommonFile/Locator.js index b6b69bc..9ef0344 100644 --- a/tests/CommonFile/Locator.js +++ b/tests/CommonFile/Locator.js @@ -123,7 +123,7 @@ const pageLocators = { RemoveLambda: "//p[text()='Remove Lambda']", SearchBox: "#combo-box-demo", SubmitButton: "//span[text()='Submit']", - TransactionText: "", + TransactionText: "Remove Lambda proposal transaction confirmed", }, ExecuteLambda: { @@ -165,7 +165,7 @@ const pageLocators = { PercentageText: "//p[@class='MuiTypography-root jss1339 jss1340 MuiTypography-body1']", DropExpired: "//span[text()='Drop Expired']", Execute: "//span[text()='Execute']", - TransactionText: "", + TransactionText: "Execute proposal transaction confirmed", }, OffChainPoll: { diff --git a/tests/CommonFile/TestData.js b/tests/CommonFile/TestData.js index 53b4708..4bb8055 100644 --- a/tests/CommonFile/TestData.js +++ b/tests/CommonFile/TestData.js @@ -1,11 +1,12 @@ + const TezosTestData = { TokenCreator: { TokenName: "My token name", TokenDescription: "My Token Descriptions", TC02TokenDescription: "", - SupplyToken: "100", - Decimals: "18", + SupplyToken: "10000000", + Decimals: "13", Symbol: "#", Icon: "Picture.PNG", WalletAddress: "tz1LCFwczMiEuNHcMvpqgNzzEs8f4FNBgyNK", @@ -13,7 +14,7 @@ const TezosTestData = { }, DAOCreate: { - DAOName: "Carbon black", + DAOName: "Carbon black.", TokenAddress: "KT1Dmxer8pvx8vTUX5V2k44th4DqnKsjhUya", TokenID: "0", GuardianAddress: "tz1LCFwczMiEuNHcMvpqgNzzEs8f4FNBgyNK", @@ -21,10 +22,10 @@ const TezosTestData = { TC04DAODescription: "", VotingDays: '00', VotingHours: '00', - VotingMinutes: "03", + VotingMinutes: "10", ExecutionDays: "00", ExecutionHours: "00", - ExecutionMinutes: "01", + ExecutionMinutes: "15", ThresholdExpiryDays: "01", ThresholdExpiryHours: "00", ThresholdExpiryMinutes: "00", @@ -33,32 +34,29 @@ const TezosTestData = { MinQuorumAmount: '1', QuorumMaxChange: '19', MaxQuorumAmount: '90', - RequiredStake: "10", - MinAmount: "10", - MaxAmount: "20", + RequiredStake: "0.1", + MinAmount: "1", + MaxAmount: "200000", }, ChangeConfiguration: { - - ProposalFee: "1", - ReturnedTokenPercentage: "1", - + ProposalFee: "12", + ReturnedTokenPercentage: "64" }, ChangeGuardian: { - WalletAddress: "tz1RXo8kLmLZDfnuAyGD2vCAZWGcCsziR4HX", - + WalletAddress: "tz1XqJz9dj4eL5c1fboFFAnevueRNFEtrBRf", }, ChangeDelegate: { - NewDelegateAddress: "tz1RXo8kLmLZDfnuAyGD2vCAZWGcCsziR4HX", + NewDelegateAddress: "tz1LcL32qu4k7aBikZs9e7LojLPbPygz5HHR", }, TransferToken: { - RecipientAddress: "tz1RXo8kLmLZDfnuAyGD2vCAZWGcCsziR4HX", + RecipientAddress: "tz1TSz4j3ANETG1pERGv3kddJrCymRJUV5VD", Asset: "$", - Amount: "10", - AgoraPostID: "10", + Amount: "11", + AgoraPostID: "0", }, TransferNFT: { @@ -66,13 +64,13 @@ const TezosTestData = { }, EditRegistry: { - Key: "Hello", - Value: "Hi", + Key: "Home DOC", + Value: "ALL Documents", }, AddLambda: { - MichelsonCode: "update_guardian_proposal", + MichelsonCode: " CDR; Extract the lambda and an integer from the parameter", }, @@ -88,14 +86,11 @@ const TezosTestData = { }, VoteOnProposal: { - Amount: "30000", + Amount: "300000", }, - ProposalExecutionAndDrop: { - Execute: "//span[text()='Execute']", - DropExpired: "//span[text()='Drop Expired']", - }, + OffChainPoll: { @@ -104,9 +99,9 @@ const TezosTestData = { ExternalLink: "https://tezos-gov-upgrades.com", Choice1: "Democracy", Choice2: "Exploration", - DD: "01", - HH: "05", - MM: "00", + DD: "00", + HH: "00", + MM: "20", }, TokenStaking: { @@ -114,10 +109,8 @@ const TezosTestData = { }, TokenWithdrawal: { - Amount: "23", + Amount: "50", }, - - } export { TezosTestData }; \ No newline at end of file diff --git a/tests/TC02/TC02-08_ChangeDelegate.spec.js b/tests/TC02/TC02-08_ChangeDelegate.spec.js new file mode 100644 index 0000000..ee50500 --- /dev/null +++ b/tests/TC02/TC02-08_ChangeDelegate.spec.js @@ -0,0 +1,39 @@ +const { test, expect } = require("@playwright/test"); +const { PreProposal } = require("../CommonFile/PreAction"); +const { pageLocators } = require("../CommonFile/Locator"); +const { TezosTestData } = require("../CommonFile/TestData"); + +test('Test case 1: Change Delegate', async ({ page }) => { + + await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal + + try { + + test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes + + await page.click(pageLocators.OffChainPoll.cycle); // Click on Running Cycle Status + + await page.click(pageLocators.OffChainPoll.NewProposal); //Click on new Proposal + + await page.click(pageLocators.ChangeDelegate.ChangeDelegate); //Click on Change Delegate + + await page.fill(pageLocators.ChangeDelegate.NewDelegateAddress, TezosTestData.ChangeDelegate.NewDelegateAddress); //New Delegate Address + + await page.click(pageLocators.ChangeDelegate.SubmitButton); //Click on Submit button + + await page.waitForTimeout(30000); //Wait For Timeout + + const content = await page.content(); //Assume Page + + const isTextVisible = content.includes(pageLocators.ChangeDelegate.TransactionText, { visible: true }); //Verify that text visible on the webpage + + console.log(isTextVisible); //Prints True or false for is Text Visible + + console.log("The proposal is successfully created and the user is redirected to a confirmation page with the details of the newly created proposal."); + + } + catch (error) { + console.log("Now Voting Cycle is running"); + } + +}) \ No newline at end of file diff --git a/tests/TC02/TC02-09_ChangeGuardian.spec.js b/tests/TC02/TC02-09_ChangeGuardian.spec.js new file mode 100644 index 0000000..59ec06d --- /dev/null +++ b/tests/TC02/TC02-09_ChangeGuardian.spec.js @@ -0,0 +1,39 @@ +const { test, expect } = require("@playwright/test"); +const { PreProposal } = require("../CommonFile/PreAction"); +const { pageLocators } = require("../CommonFile/Locator"); +const { TezosTestData } = require("../CommonFile/TestData"); + +test('Test case 2: Change Guardian', async ({ page }) => { + + await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal + + try { + + test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes + + await page.click(pageLocators.OffChainPoll.cycle); // Click on Running Cycle Status + + await page.click(pageLocators.OffChainPoll.NewProposal); //Click on new Proposal + + await page.click(pageLocators.ChangeGuardian.ChangeGuardian); //Click on Change Guardian + + await page.fill(pageLocators.ChangeGuardian.WalletAddress, TezosTestData.ChangeGuardian.WalletAddress); //Pass The Wallet Address + + await page.click(pageLocators.ChangeGuardian.SubmitButton); //Click on Submit button + + await page.waitForTimeout(30000); //Wait for TimeOut Submit the proposal + + const content = await page.content(); //Assume Page + + const isTextVisible = content.includes(pageLocators.ChangeGuardian.TransactionText, { visible: true }); //Verify that text visible on the webpage + + console.log(isTextVisible); //Prints True or false for is Text Visible + + console.log(" The proposal is successfully created and the user is redirected to a confirmation page with the details of the newly created proposal."); + + } + catch (error) { + console.log("Now Voting Cycle is running"); + } + +}) \ No newline at end of file diff --git a/tests/TC03/TC03-03_ProposalDrop.spec.js b/tests/TC03/TC03-02_ProposalDrop.spec.js similarity index 95% rename from tests/TC03/TC03-03_ProposalDrop.spec.js rename to tests/TC03/TC03-02_ProposalDrop.spec.js index c6a4281..f9c0f5a 100644 --- a/tests/TC03/TC03-03_ProposalDrop.spec.js +++ b/tests/TC03/TC03-02_ProposalDrop.spec.js @@ -4,7 +4,7 @@ const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 3: Drop the Active proposal', async ({ page, browserName }) => { +test('Test case 2: Drop the Active proposal', async ({ page, browserName }) => { if (browserName !== 'chromium') { return; } diff --git a/tests/TC05/TC05-02_SuccessfulTokenWithdrawal.spec.js b/tests/TC05/TC05-01_SuccessfulTokenWithdrawal.spec.js similarity index 95% rename from tests/TC05/TC05-02_SuccessfulTokenWithdrawal.spec.js rename to tests/TC05/TC05-01_SuccessfulTokenWithdrawal.spec.js index ecfe5ee..740a4c1 100644 --- a/tests/TC05/TC05-02_SuccessfulTokenWithdrawal.spec.js +++ b/tests/TC05/TC05-01_SuccessfulTokenWithdrawal.spec.js @@ -3,7 +3,7 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 2: Successful Token Withdrawal', async ({ page }) => { +test('Test case 1: Successful Token Withdrawal', async ({ page }) => { test.setTimeout(30* 60 * 1000); //Extending Test Case timeout to 10 minutes diff --git a/tests/TC05/TC05-03_SuccessfulTokenStaking.spec.js b/tests/TC05/TC05-02_SuccessfulTokenStaking.spec.js similarity index 95% rename from tests/TC05/TC05-03_SuccessfulTokenStaking.spec.js rename to tests/TC05/TC05-02_SuccessfulTokenStaking.spec.js index abe258c..41c78d1 100644 --- a/tests/TC05/TC05-03_SuccessfulTokenStaking.spec.js +++ b/tests/TC05/TC05-02_SuccessfulTokenStaking.spec.js @@ -4,7 +4,7 @@ const { pageLocators } = require("../CommonFile/Locator"); const path = require('path'); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 3: Successful Token Staking', async ({ page }) => { +test('Test case 2: Successful Token Staking', async ({ page }) => { test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes diff --git a/tests/TC03/TC03-02_ProposalExecution.spec.js b/tests/TC06/TC06-01ProposalExecution.spec.js similarity index 92% rename from tests/TC03/TC03-02_ProposalExecution.spec.js rename to tests/TC06/TC06-01ProposalExecution.spec.js index 64ea91f..b01479a 100644 --- a/tests/TC03/TC03-02_ProposalExecution.spec.js +++ b/tests/TC06/TC06-01ProposalExecution.spec.js @@ -2,7 +2,7 @@ const { test, expect } = require("@playwright/test"); const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); -test('Test case 2: On-Chain Proposal Execution & Drop', async ({ page, browserName }) => { +test('Test case 1: On-Chain Proposal Execution', async ({ page, browserName }) => { if (browserName !== 'chromium') { return; } diff --git a/tests/TC05/TC05-01_SuccessfulTokenUnStaking.spec.js b/tests/TC06/TC06-02_SuccessfulTokenUnStaking.spec.js similarity index 94% rename from tests/TC05/TC05-01_SuccessfulTokenUnStaking.spec.js rename to tests/TC06/TC06-02_SuccessfulTokenUnStaking.spec.js index 17680a7..009e528 100644 --- a/tests/TC05/TC05-01_SuccessfulTokenUnStaking.spec.js +++ b/tests/TC06/TC06-02_SuccessfulTokenUnStaking.spec.js @@ -2,7 +2,7 @@ const { test, expect } = require("@playwright/test"); const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); -test('Test case 1: Successful Token UnStaking on Chromium', async ({ page, browserName }) => { +test('Test case 2: Successful Token UnStaking on Chromium', async ({ page, browserName }) => { if (browserName !== 'chromium') { return; } From 2627689efcc956e18cfeaba36eb1504b60f638c8 Mon Sep 17 00:00:00 2001 From: w3rahul Date: Sat, 2 Sep 2023 23:45:09 +0530 Subject: [PATCH 08/36] WIP: Test Case - Module TC 05 and further --- tests/TC02/TC02-01_TransferTokens.spec.js | 5 ++++- tests/TC02/TC02-02_ChangeConfiguration.spec.js | 5 ++++- tests/TC02/TC02-03_TransferNFT.spec.js | 6 ++++-- tests/TC02/TC02-04_EditRegistry.spec.js | 6 ++++-- tests/TC02/TC02-05_AddLambda.spec.js | 6 ++++-- tests/TC02/TC02-06_RemoveLambda.spec.js | 6 ++++-- tests/TC02/TC02-07_ExecuteLambda.spec.js | 6 ++++-- tests/TC02/TC02-08_ChangeDelegate.spec.js | 6 ++++-- tests/TC02/TC02-09_ChangeGuardian.spec.js | 6 ++++-- 9 files changed, 36 insertions(+), 16 deletions(-) diff --git a/tests/TC02/TC02-01_TransferTokens.spec.js b/tests/TC02/TC02-01_TransferTokens.spec.js index 680ed6a..03e2de9 100644 --- a/tests/TC02/TC02-01_TransferTokens.spec.js +++ b/tests/TC02/TC02-01_TransferTokens.spec.js @@ -3,7 +3,10 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 1: Transfer Tokens', async ({ page }) => { +test('Test case 1: Transfer Tokens', async ({ page, browserName }) => { + if (browserName !== 'chromium') { + return; + } await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal diff --git a/tests/TC02/TC02-02_ChangeConfiguration.spec.js b/tests/TC02/TC02-02_ChangeConfiguration.spec.js index 7aa9f84..0fc5b88 100644 --- a/tests/TC02/TC02-02_ChangeConfiguration.spec.js +++ b/tests/TC02/TC02-02_ChangeConfiguration.spec.js @@ -3,7 +3,10 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 2: Change Configuration', async ({ page }) => { +test('Test case 2: Change Configuration', async ({ page, browserName }) => { + if (browserName !== 'chromium') { + return; + } await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal diff --git a/tests/TC02/TC02-03_TransferNFT.spec.js b/tests/TC02/TC02-03_TransferNFT.spec.js index a0458be..96b4677 100644 --- a/tests/TC02/TC02-03_TransferNFT.spec.js +++ b/tests/TC02/TC02-03_TransferNFT.spec.js @@ -4,8 +4,10 @@ const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); const path = require('path'); -test('Test case 3: Transfer NFT ', async ({ page }) => { - +test('Test case 3: Transfer NFT ', async ({ page, browserName }) => { + if (browserName !== 'chromium') { + return; + } await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal try { diff --git a/tests/TC02/TC02-04_EditRegistry.spec.js b/tests/TC02/TC02-04_EditRegistry.spec.js index 150005f..4e901b6 100644 --- a/tests/TC02/TC02-04_EditRegistry.spec.js +++ b/tests/TC02/TC02-04_EditRegistry.spec.js @@ -3,8 +3,10 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 4: Edit Registry', async ({ page }) => { - +test('Test case 4: Edit Registry', async ({ page, browserName }) => { + if (browserName !== 'chromium') { + return; + } await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal try { diff --git a/tests/TC02/TC02-05_AddLambda.spec.js b/tests/TC02/TC02-05_AddLambda.spec.js index 0945965..48251fe 100644 --- a/tests/TC02/TC02-05_AddLambda.spec.js +++ b/tests/TC02/TC02-05_AddLambda.spec.js @@ -3,8 +3,10 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 5: Add Lambda ', async ({ page }) => { - +test('Test case 5: Add Lambda ', async ({ page, browserName }) => { + if (browserName !== 'chromium') { + return; + } await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal try { diff --git a/tests/TC02/TC02-06_RemoveLambda.spec.js b/tests/TC02/TC02-06_RemoveLambda.spec.js index f152572..f79b8d3 100644 --- a/tests/TC02/TC02-06_RemoveLambda.spec.js +++ b/tests/TC02/TC02-06_RemoveLambda.spec.js @@ -3,8 +3,10 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 6: Remove Lambda ', async ({ page }) => { - +test('Test case 6: Remove Lambda ', async ({ page, browserName }) => { + if (browserName !== 'chromium') { + return; + } await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal try { diff --git a/tests/TC02/TC02-07_ExecuteLambda.spec.js b/tests/TC02/TC02-07_ExecuteLambda.spec.js index f02c9d0..3363904 100644 --- a/tests/TC02/TC02-07_ExecuteLambda.spec.js +++ b/tests/TC02/TC02-07_ExecuteLambda.spec.js @@ -3,8 +3,10 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 7: Execute Lambda ', async ({ page }) => { - +test('Test case 7: Execute Lambda ', async ({ page, browserName }) => { + if (browserName !== 'chromium') { + return; + } await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal try { diff --git a/tests/TC02/TC02-08_ChangeDelegate.spec.js b/tests/TC02/TC02-08_ChangeDelegate.spec.js index ee50500..7692be0 100644 --- a/tests/TC02/TC02-08_ChangeDelegate.spec.js +++ b/tests/TC02/TC02-08_ChangeDelegate.spec.js @@ -3,8 +3,10 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 1: Change Delegate', async ({ page }) => { - +test('Test case 8: Change Delegate', async ({ page, browserName }) => { + if (browserName !== 'chromium') { + return; + } await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal try { diff --git a/tests/TC02/TC02-09_ChangeGuardian.spec.js b/tests/TC02/TC02-09_ChangeGuardian.spec.js index 59ec06d..8f8ea0c 100644 --- a/tests/TC02/TC02-09_ChangeGuardian.spec.js +++ b/tests/TC02/TC02-09_ChangeGuardian.spec.js @@ -3,8 +3,10 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 2: Change Guardian', async ({ page }) => { - +test('Test case 9: Change Guardian', async ({ page, browserName }) => { + if (browserName !== 'chromium') { + return; + } await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal try { From 13f2f1aaef313d3a29041b36972a0ff347abff9b Mon Sep 17 00:00:00 2001 From: w3rahul Date: Sun, 3 Sep 2023 22:04:17 +0530 Subject: [PATCH 09/36] WIP: Test Case - Module TC 05 and further --- tests/CommonFile/TestData.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/CommonFile/TestData.js b/tests/CommonFile/TestData.js index 4bb8055..d921396 100644 --- a/tests/CommonFile/TestData.js +++ b/tests/CommonFile/TestData.js @@ -10,7 +10,7 @@ const TezosTestData = { Symbol: "#", Icon: "Picture.PNG", WalletAddress: "tz1LCFwczMiEuNHcMvpqgNzzEs8f4FNBgyNK", - Amount: "100", + Amount: "10000000", }, DAOCreate: { From 2a2012114e1ba3e15b7ee7da505b8c8ea9f63656 Mon Sep 17 00:00:00 2001 From: w3rahul Date: Tue, 5 Sep 2023 16:04:44 +0530 Subject: [PATCH 10/36] WIP: Test Case - Module TC 05 and further --- TestData/hd-wallet.tez | 8 ---- tests/CommonFile/Locator.js | 10 ++--- tests/CommonFile/TestData.js | 10 ++--- tests/TC02/TC02-07_ExecuteLambda.spec.js | 53 ------------------------ 4 files changed, 10 insertions(+), 71 deletions(-) delete mode 100644 TestData/hd-wallet.tez delete mode 100644 tests/TC02/TC02-07_ExecuteLambda.spec.js diff --git a/TestData/hd-wallet.tez b/TestData/hd-wallet.tez deleted file mode 100644 index 7c78d40..0000000 --- a/TestData/hd-wallet.tez +++ /dev/null @@ -1,8 +0,0 @@ -{ - "provider": "Kukai", - "version": 3, - "walletType": 4, - "encryptedSeed": "abaa113b9d4430083b66337fba7bf82b2dfebc0314cdce0a123c24648791402ed94fe669fe76b897f6bbcba2326caac8f112b714daac9440a42a8943f7691b73==e9b2eda04a575492249a5714fffcfb71", - "encryptedEntropy": "a4125f854cd63c2f639bd75924aac346477e401c6f4a4ae205409f6303e18ccd==c9cda4c8818a15921ae1f4c160857f40", - "iv": "2ec78914461a8ac254fab9ba0416fbb0" -} \ No newline at end of file diff --git a/tests/CommonFile/Locator.js b/tests/CommonFile/Locator.js index 9ef0344..2f01b38 100644 --- a/tests/CommonFile/Locator.js +++ b/tests/CommonFile/Locator.js @@ -115,7 +115,7 @@ const pageLocators = { AddLambda: "//p[text()='Add Lambda']", TestBox: ".npm__react-simple-code-editor__textarea", SubmitButton: "//span[text()='Submit']", - TransactionText: "", + TransactionText: "Add Lambda proposal transaction confirmed", }, @@ -129,10 +129,11 @@ const pageLocators = { ExecuteLambda: { ExecuteLambda: "//p[text()='Execute Lambda']", SearchBox: "#combo-box-demo", - LambdaArgumentsCode: 'Write Michelson Code for the input Paramerers of your Lambda\n\nEg:-\n\n{\n "prim": "pair",\n "annots": [\n "%xtz_transfer_type"\n ],\n "args": [\n {\n "prim": "mutez",\n "annots": [\n "%amount"\n ]\n },\n {\n "prim": "address",\n "annots": [\n "%recipient"\n ]\n }\n ]\n},\n', - LambdaParams: 'Enter the values for the given params in a JSON/JavaScript Object format.\n\nEg:-\n\n{\n xtz_transfer_type: {\n amount: 10000000000000000000,\n recipient: "tz1VSUr8wwNhLAzempoch5d6hLRiTh8Cjcjb"\n }\n}\n ', + Dropdown: "//button[@class='MuiButtonBase-root MuiIconButton-root MuiAutocomplete-popupIndicator']", + LambdaArgumentsCode: "//textarea[@placeholder='Write Michelson Code for the input Paramerers of your Lambda']", + LambdaParams: "Enter the values for the given params in a JSON/JavaScript Object format", SubmitButton: "//span[text()='Submit']", - TransactionText: "", + TransactionText: "Execute Lambda proposal transaction confirmed", }, VoteOnProposal: { @@ -148,7 +149,6 @@ const pageLocators = { View: "//span[text()='View']", Support: ".MuiGrid-root.MuiGrid-container.MuiGrid-item.MuiGrid-wrap-xs-nowrap.MuiGrid-align-items-xs-baseline.MuiGrid-grid-md-12", Oppose: ".MuiGrid-root.MuiGrid-container.MuiGrid-wrap-xs-nowrap.MuiGrid-align-items-xs-center.MuiGrid-grid-md-12", - }, ProposalDrop: { diff --git a/tests/CommonFile/TestData.js b/tests/CommonFile/TestData.js index d921396..fa7dede 100644 --- a/tests/CommonFile/TestData.js +++ b/tests/CommonFile/TestData.js @@ -5,15 +5,15 @@ const TezosTestData = { TokenName: "My token name", TokenDescription: "My Token Descriptions", TC02TokenDescription: "", - SupplyToken: "10000000", + SupplyToken: "100000000", Decimals: "13", - Symbol: "#", + Symbol: "$", Icon: "Picture.PNG", WalletAddress: "tz1LCFwczMiEuNHcMvpqgNzzEs8f4FNBgyNK", - Amount: "10000000", + Amount: "100000000", }, - DAOCreate: { + DAOCreate: { DAOName: "Carbon black.", TokenAddress: "KT1Dmxer8pvx8vTUX5V2k44th4DqnKsjhUya", TokenID: "0", @@ -79,7 +79,7 @@ const TezosTestData = { }, ExecuteLambda: { - SearchText: "transfer_proposal", + LambdaArgumentsCode: "Write Michelson Code For the Input", LambdaParams: "Enter the values for the given params in a JSON/JavaScript Object format.", diff --git a/tests/TC02/TC02-07_ExecuteLambda.spec.js b/tests/TC02/TC02-07_ExecuteLambda.spec.js deleted file mode 100644 index 3363904..0000000 --- a/tests/TC02/TC02-07_ExecuteLambda.spec.js +++ /dev/null @@ -1,53 +0,0 @@ -const { test, expect } = require("@playwright/test"); -const { PreProposal } = require("../CommonFile/PreAction"); -const { pageLocators } = require("../CommonFile/Locator"); -const { TezosTestData } = require("../CommonFile/TestData"); - -test('Test case 7: Execute Lambda ', async ({ page, browserName }) => { - if (browserName !== 'chromium') { - return; - } - await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal - - try { - - test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes - - await page.click(pageLocators.OffChainPoll.cycle); // Click on Running Cycle Status - - await page.click(pageLocators.OffChainPoll.NewProposal); //Click On New Proposal - - await page.click(pageLocators.ExecuteLambda.ExecuteLambda); //Click on Execute Lambda - - await page.fill(pageLocators.ExecuteLambda.SearchBox, TezosTestData.ExecuteLambda.SearchText); //Pass the Search Text - - await page.waitForTimeout(1000); //Wait For Pass The Data - - await page.keyboard.press('ArrowDown'); //Click on DownArrow Button - - await page.keyboard.press('Enter'); //Click on Enter Button - - await page.fill(pageLocators.ExecuteLambda.ExecuteLambda, TezosTestData.ExecuteLambda.LambdaArgumentsCode); //Pass The Lambda Arguments Code - - await page.fill(pageLocators.ExecuteLambda.LambdaParams, TezosTestData.ExecuteLambda.LambdaParams); //Pass The Lambda Params Code - - await page.waitForTimeout(2000); //Wait For Validate - - const content = await page.content(); //Assume Page - - await page.click(pageLocators.ExecuteLambda.SubmitButton); //Click On the Submit Button - - await page.waitForTimeout(30000); //Wait For Pass The test Data - - const isTextVisible = content.includes(pageLocators.ExecuteLambda.TransactionText, { visible: true }); //Verify that text visible on the webpage - - console.log(isTextVisible); //Prints True or false for is Text Visible - - console.log("The proposal is successfully created and the user is redirected to a confirmation page with the details of the newly created proposal."); - - } - catch (error) { - console.log("Now Voting cycle is running"); - } - -}) \ No newline at end of file From 290032831f4438f4c6bb9bd1b08b76b2b735b55d Mon Sep 17 00:00:00 2001 From: w3rahul Date: Tue, 5 Sep 2023 17:42:25 +0530 Subject: [PATCH 11/36] WIP: Test Case - Module TC 05 and further --- tests/CommonFile/Locator.js | 2 +- tests/CommonFile/TestData.js | 20 +++++++++----------- tests/TC03/TC03-01_VoteOnProposal.spec.js | 5 +++-- tests/TC03/TC03-02_ProposalDrop.spec.js | 5 +++-- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/tests/CommonFile/Locator.js b/tests/CommonFile/Locator.js index 2f01b38..3d69bcc 100644 --- a/tests/CommonFile/Locator.js +++ b/tests/CommonFile/Locator.js @@ -20,7 +20,7 @@ const pageLocators = { ContinueButton2: "//p[text()='Continue']", launch: "//p[text()='Launch']", DeployText: "Governance token successfully deployed", - ConsoleAddress: "p[class='MuiTypography-root-165 MuiTypography-body1-167 MuiTypography-colorTextSecondary-191']", + ConsoleAddress: "//p[@class='MuiTypography-root-165 MuiTypography-body1-167 MuiTypography-colorTextSecondary-191']", ErrorText: "Required", }, diff --git a/tests/CommonFile/TestData.js b/tests/CommonFile/TestData.js index fa7dede..92f16f6 100644 --- a/tests/CommonFile/TestData.js +++ b/tests/CommonFile/TestData.js @@ -40,22 +40,22 @@ const TezosTestData = { }, ChangeConfiguration: { - ProposalFee: "12", - ReturnedTokenPercentage: "64" + ProposalFee: "14", + ReturnedTokenPercentage: "63" }, ChangeGuardian: { - WalletAddress: "tz1XqJz9dj4eL5c1fboFFAnevueRNFEtrBRf", + WalletAddress: "tz1hhjjjnCe7ePEKGRaArKzqyKpgQtrTK3RD", }, ChangeDelegate: { - NewDelegateAddress: "tz1LcL32qu4k7aBikZs9e7LojLPbPygz5HHR", + NewDelegateAddress: "tz1LY2KJKKkXbA7EoN8K2rd8X1GDgcfj5zy6", }, TransferToken: { - RecipientAddress: "tz1TSz4j3ANETG1pERGv3kddJrCymRJUV5VD", + RecipientAddress: "tz1MBFA5nJgPgkp1ThXHcSs4YLuUrHmUM1Ef", Asset: "$", - Amount: "11", + Amount: "12", AgoraPostID: "0", }, @@ -64,13 +64,13 @@ const TezosTestData = { }, EditRegistry: { - Key: "Home DOC", - Value: "ALL Documents", + Key: "Home ", + Value: "Documents", }, AddLambda: { - MichelsonCode: " CDR; Extract the lambda and an integer from the parameter", + MichelsonCode: "Extract the lambda and an integer from the parameter", }, @@ -91,8 +91,6 @@ const TezosTestData = { }, - - OffChainPoll: { ProposalTitle: 'governance', ShortDescription: "This proposal aims to conduct an off-chain poll to gather community input on potential upgrades to the Tezos governance process.", diff --git a/tests/TC03/TC03-01_VoteOnProposal.spec.js b/tests/TC03/TC03-01_VoteOnProposal.spec.js index 05a21da..266e5c0 100644 --- a/tests/TC03/TC03-01_VoteOnProposal.spec.js +++ b/tests/TC03/TC03-01_VoteOnProposal.spec.js @@ -4,15 +4,16 @@ const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 1: Vote On On-Chain Proposal ', async ({ page, browserName }) => { +test('Test case 1: Vote On On-Chain Proposal ', async ({ page, browserName }) => { if (browserName !== 'chromium') { return; } + await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal try { - test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes + test.setTimeout(20 * 60 * 1000); //Extending Test Case timeout to 10 minutes await page.click(pageLocators.VoteOnProposal.VotingCycle); // Click on Running Cycle Status diff --git a/tests/TC03/TC03-02_ProposalDrop.spec.js b/tests/TC03/TC03-02_ProposalDrop.spec.js index f9c0f5a..d6b3e15 100644 --- a/tests/TC03/TC03-02_ProposalDrop.spec.js +++ b/tests/TC03/TC03-02_ProposalDrop.spec.js @@ -4,15 +4,16 @@ const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 2: Drop the Active proposal', async ({ page, browserName }) => { +test('Test case 2: Drop the Active proposal', async ({ page, browserName }) => { if (browserName !== 'chromium') { return; } + await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal try { - test.setTimeout( 10* 60 * 1000); //Extending Test Case timeout to 10 minutes + test.setTimeout( 20* 60 * 1000); //Extending Test Case timeout to 10 minutes await page.click(pageLocators.VoteOnProposal.VotingCycle); // Click on Running Cycle Status From cde1e18b5f257a7efec6f13e338fa29c0c333ca4 Mon Sep 17 00:00:00 2001 From: w3rahul Date: Tue, 12 Sep 2023 13:48:36 +0530 Subject: [PATCH 12/36] WIP:Test Case - Module TC06 and More --- tests/CommonFile/Locator.js | 145 ++++++++++-------- tests/CommonFile/PreAction.js | 4 +- tests/CommonFile/PreVoteOnOffChainPoll.js | 47 ------ tests/CommonFile/TestData.js | 61 ++++---- tests/TC01/TC01-01_CreateToken.spec.js | 59 +++---- tests/TC01/TC01-02_TokenValues.spec.js | 2 +- tests/TC01/TC01-03_CreateDAO.spec.js | 13 +- tests/TC01/TC01-04_DAOValues.spec.js | 2 +- .../TC02-01_OffChainPoll.spec.js} | 2 +- .../TC02-02_VoteonOffChainPoll.spec.js} | 6 +- ...03_CorrectVoteCountOnOffChainPoll.spec.js} | 2 +- tests/TC02/TC02-03_TransferNFT.spec.js | 30 ---- tests/TC03/TC03-01_TokenDeposit.spec.js | 34 ++++ tests/TC03/TC03-02_AcceptDelegation.spec.js | 32 ++++ .../TC04-01_TransferTokens.spec.js} | 9 +- .../TC04-02_ChangeConfiguration.spec.js} | 7 +- .../TC04-03_EditRegistry.spec.js} | 8 +- .../TC04-04_AddLambda.spec.js} | 8 +- .../TC04-05_RemoveLambda.spec.js} | 8 +- .../TC04-06_ChangeDelegate.spec.js} | 8 +- .../TC04-07_ChangeGuardian.spec.js} | 8 +- .../TC05-01_ProposalDrop.spec.js} | 16 +- .../TC05-02_VoteOnProposal.spec.js} | 18 ++- tests/TC06/TC06-01ProposalExecution.spec.js | 33 ---- .../TC06-01_TokenWithdrawal.spec.js} | 2 +- .../TC06-02_SuccessfulTokenUnStaking.spec.js | 36 ----- .../TC06-02_TokenStaking.spec.js} | 1 - 27 files changed, 261 insertions(+), 340 deletions(-) delete mode 100644 tests/CommonFile/PreVoteOnOffChainPoll.js rename tests/{TC04/TC04-01_OffChainPoll.spec.js => TC02/TC02-01_OffChainPoll.spec.js} (96%) rename tests/{TC04/TC04-02_VoteonOffChainPoll.spec.js => TC02/TC02-02_VoteonOffChainPoll.spec.js} (82%) rename tests/{TC04/TC04-03_CorrectVoteCountOnOffChainPoll.spec.js => TC02/TC02-03_CorrectVoteCountOnOffChainPoll.spec.js} (94%) delete mode 100644 tests/TC02/TC02-03_TransferNFT.spec.js create mode 100644 tests/TC03/TC03-01_TokenDeposit.spec.js create mode 100644 tests/TC03/TC03-02_AcceptDelegation.spec.js rename tests/{TC02/TC02-01_TransferTokens.spec.js => TC04/TC04-01_TransferTokens.spec.js} (90%) rename tests/{TC02/TC02-02_ChangeConfiguration.spec.js => TC04/TC04-02_ChangeConfiguration.spec.js} (88%) rename tests/{TC02/TC02-04_EditRegistry.spec.js => TC04/TC04-03_EditRegistry.spec.js} (87%) rename tests/{TC02/TC02-05_AddLambda.spec.js => TC04/TC04-04_AddLambda.spec.js} (87%) rename tests/{TC02/TC02-06_RemoveLambda.spec.js => TC04/TC04-05_RemoveLambda.spec.js} (88%) rename tests/{TC02/TC02-08_ChangeDelegate.spec.js => TC04/TC04-06_ChangeDelegate.spec.js} (87%) rename tests/{TC02/TC02-09_ChangeGuardian.spec.js => TC04/TC04-07_ChangeGuardian.spec.js} (87%) rename tests/{TC03/TC03-02_ProposalDrop.spec.js => TC05/TC05-01_ProposalDrop.spec.js} (67%) rename tests/{TC03/TC03-01_VoteOnProposal.spec.js => TC05/TC05-02_VoteOnProposal.spec.js} (76%) delete mode 100644 tests/TC06/TC06-01ProposalExecution.spec.js rename tests/{TC05/TC05-01_SuccessfulTokenWithdrawal.spec.js => TC06/TC06-01_TokenWithdrawal.spec.js} (93%) delete mode 100644 tests/TC06/TC06-02_SuccessfulTokenUnStaking.spec.js rename tests/{TC05/TC05-02_SuccessfulTokenStaking.spec.js => TC06/TC06-02_TokenStaking.spec.js} (97%) diff --git a/tests/CommonFile/Locator.js b/tests/CommonFile/Locator.js index 3d69bcc..bbb9779 100644 --- a/tests/CommonFile/Locator.js +++ b/tests/CommonFile/Locator.js @@ -1,3 +1,4 @@ +import { DAOName } from './TestData'; const pageLocators = { TokenCreator: { @@ -61,28 +62,60 @@ const pageLocators = { DeployDAO: "//p[text()='Deploy DAO']", DAOText: "Go to my DAO", ErrorText: "Required", + ConsoleDAOName:"//p[@class='MuiTypography-root jss30 jss31 MuiTypography-body1 MuiTypography-colorTextPrimary']", + }, - ChangeConfiguration: { - DAOConfiguration: "//p[text()='DAO Configuration']", - ProposalFee: "//input[@name='frozen_extra_value']", - ReturnedTokenPercentage: "//input[@name='returnedPercentage']", - SubmitButton: "//span[text()='Submit']", - TransactionText: "", + AcceptDelegation:{ + EditButton:"//p[text()='Edit']", + AcceptButton:"//input[@value='ACCEPT_DELEGATIONS']", + SubmitButton:"//span[text()='Submit']", + TransactionText:"Delegate transaction confirmed", }, - ChangeGuardian: { - ChangeGuardian: "//p[text()='Change Guardian']", - WalletAddress: "input[placeholder=' tz1...']", - SubmitButton: '//span[text()="Submit"]', - TransactionText: "Guardian change proposal transaction confirmed", + TokenStaking: { + User: "//p[text()='User']", + Deposit: "//span[text()='Deposit']", + PassAmount: "//input[@placeholder='0']", + UseMax: "//p[text()='Use Max']", + Submit: "//span[text()='Submit']", + TransactionText: "Deposit transaction confirmed", + Balance: "//div[@class='MuiGrid-root MuiGrid-container MuiGrid-item MuiGrid-justify-content-xs-space-between']", }, - ChangeDelegate: { - ChangeDelegate: "//p[text()='Change Delegate']", - NewDelegateAddress: "input[placeholder=' tz1...']", - SubmitButton: "//span[text()='Submit']", - TransactionText: "Delegation change proposal transaction confirmed", + OffChainPoll: { + + DAO: `//p[text()='${DAOName}']`, + Proposal: "//p[text()='Proposals']", + cycle: "//p[text()='Creating']", + NewProposal: "//span[text()='New Proposal']", + OffChainPoll: "//p[text()='Off Chain Poll']", + ProposalTitle: "input[placeholder='Proposal Title*']", + ShortDescription: "textarea[placeholder='Short description']", + ExternalLink: "input[placeholder='External Link']", + multipleChoice: "input[value='1']", + Choice1: "input[placeholder='Choice 1']", + AddChoice: ".MuiButtonBase-root.MuiIconButton-root.MuiIconButton-sizeSmall", + Choice2: "input[placeholder='Choice 2']", + Choice3: "input[placeholder='Choice 3']", + DD: "input[placeholder='DD']", + HH: "input[placeholder='HH']", + MM: "input[placeholder='MM']", + CreateProposalButton: "button[class='MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-containedSecondary']", + CreateText: "Proposal created", + }, + + VoteOnOffChainPoll: { + ProposalTitle: "//h4[text()='GOV']", + Choice1: "//p[text()='Democracy']", + Choice2: "//p[text()='Exploration']", + CastYourVote: "//span[text()='Cast your vote']", + VoteDone: "Your vote has been submitted", + }, + + CorrectVoteCount: { + VoteCount: "div[class='MuiGrid-root MuiGrid-container MuiGrid-item MuiGrid-grid-xs-12 MuiGrid-grid-sm-6 MuiGrid-grid-md-6 MuiGrid-grid-lg-6'] p[class='MuiTypography-root MuiTypography-body1 MuiTypography-colorSecondary']", + Options: "//div[@class='MuiGrid-root MuiGrid-container MuiGrid-item MuiGrid-justify-content-xs-flex-end MuiGrid-grid-xs-12 MuiGrid-grid-sm-6 MuiGrid-grid-lg-6']", }, TransferToken: { @@ -96,7 +129,16 @@ const pageLocators = { TransactionText: "Registry proposal transaction confirmed", }, + ChangeConfiguration: { + DAOConfiguration: "//p[text()='DAO Configuration']", + ProposalFee: "//input[@name='frozen_extra_value']", + ReturnedTokenPercentage: "//input[@name='returnedPercentage']", + SubmitButton: "//span[text()='Submit']", + TransactionText: "", + }, + TransferNFT: { + DAO: "", NFTs: "//span[text()='NFTs']", }, @@ -136,11 +178,28 @@ const pageLocators = { TransactionText: "Execute Lambda proposal transaction confirmed", }, + ChangeDelegate: { + ChangeDelegate: "//p[text()='Change Delegate']", + NewDelegateAddress: "input[placeholder=' tz1...']", + SubmitButton: "//span[text()='Submit']", + TransactionText: "Delegation change proposal transaction confirmed", + }, + + ChangeGuardian: { + ChangeGuardian: "//p[text()='Change Guardian']", + WalletAddress: "input[placeholder=' tz1...']", + SubmitButton: '//span[text()="Submit"]', + TransactionText: "Guardian change proposal transaction confirmed", + }, + VoteOnProposal: { VotingCycle: "//p[text()='Voting']", OnChainButton: "//button[@class='MuiButtonBase-root MuiButton-root MuiButton-text jss417']", Active: "//p[text()='Active']", Pending: "//p[text()='Pending']", + NoQuorum: "//p[text()='No Quorum']", + Expired: "//p[text()='Expired']", + Rejected: "//p[text()='Rejected']", VoteFor: "//span[text()='Vote For']", VoteAgainst: "//span[text()='Vote Against']", UseMax: "//p[text()='Use Max']", @@ -149,11 +208,7 @@ const pageLocators = { View: "//span[text()='View']", Support: ".MuiGrid-root.MuiGrid-container.MuiGrid-item.MuiGrid-wrap-xs-nowrap.MuiGrid-align-items-xs-baseline.MuiGrid-grid-md-12", Oppose: ".MuiGrid-root.MuiGrid-container.MuiGrid-wrap-xs-nowrap.MuiGrid-align-items-xs-center.MuiGrid-grid-md-12", - }, - - ProposalDrop: { - ProposalDrop: "//span[text()='Drop Proposal']", - TransactionText: "Drop proposal transaction confirmed", + TransactionText: "Vote transaction confirmed", }, ProposalExecution: { @@ -168,51 +223,9 @@ const pageLocators = { TransactionText: "Execute proposal transaction confirmed", }, - OffChainPoll: { - EasyTaskDAO: "//p[text()='Easy Task DAO']", - Proposal: "//p[text()='Proposals']", - cycle: "//p[text()='Creating']", - NewProposal: "//span[text()='New Proposal']", - OffChainPoll: "//p[text()='Off Chain Poll']", - ProposalTitle: "input[placeholder='Proposal Title*']", - ShortDescription: "textarea[placeholder='Short description']", - ExternalLink: "input[placeholder='External Link']", - multipleChoice: "input[value='1']", - Choice1: "input[placeholder='Choice 1']", - AddChoice: ".MuiButtonBase-root.MuiIconButton-root.MuiIconButton-sizeSmall", - Choice2: "input[placeholder='Choice 2']", - Choice3: "input[placeholder='Choice 3']", - DD: "input[placeholder='DD']", - HH: "input[placeholder='HH']", - MM: "input[placeholder='MM']", - CreateProposalButton: "button[class='MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-containedSecondary']", - CreateText: "Proposal created", - CloseButton: '.MuiBox-root > .MuiSvgIcon-root', - }, - - VoteOnOffChainPoll: { - ProposalTitle: "//h4[text()='Community']", - Choice1: "//p[text()='Democracy']", - Choice2: "//p[text()='Exploration']", - CastYourVote: "//span[text()='Cast your vote']", - VoteDone: "Your vote has been submitted", - }, - - CorrectVoteCount: { - VoteCount: "div[class='MuiGrid-root MuiGrid-container MuiGrid-item MuiGrid-grid-xs-12 MuiGrid-grid-sm-6 MuiGrid-grid-md-6 MuiGrid-grid-lg-6'] p[class='MuiTypography-root MuiTypography-body1 MuiTypography-colorSecondary']", - Options: "//div[@class='MuiGrid-root MuiGrid-container MuiGrid-item MuiGrid-justify-content-xs-flex-end MuiGrid-grid-xs-12 MuiGrid-grid-sm-6 MuiGrid-grid-lg-6']", - - - }, - - TokenStaking: { - User: "//p[text()='User']", - Deposit: "//span[text()='Deposit']", - PassAmount: "//input[@placeholder='0']", - UseMax: "//p[text()='Use Max']", - Submit: "//span[text()='Submit']", - TransactionText: "Deposit transaction confirmed", - Balance: "//div[@class='MuiGrid-root MuiGrid-container MuiGrid-item MuiGrid-justify-content-xs-space-between']", + ProposalDrop: { + ProposalDrop: "//span[text()='Drop Proposal']", + TransactionText: "Drop proposal transaction confirmed", }, UnStakingToken: { diff --git a/tests/CommonFile/PreAction.js b/tests/CommonFile/PreAction.js index b702a96..3deb2d3 100644 --- a/tests/CommonFile/PreAction.js +++ b/tests/CommonFile/PreAction.js @@ -4,11 +4,11 @@ const { changeNetwork } = require("./Action"); async function PreProposal(page){ - test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes + test.setTimeout(5 * 60 * 1000); //Extending Test Case timeout to 5 minutes await changeNetwork(page); //PreConditions Open URL and Selecting the Ghost-net - await page.click(pageLocators.OffChainPoll.EasyTaskDAO); //Click on Mask DAO + await page.click(pageLocators.OffChainPoll.DAO); //Click on Mask DAO await page.click(pageLocators.OffChainPoll.Proposal); //Click on Proposal diff --git a/tests/CommonFile/PreVoteOnOffChainPoll.js b/tests/CommonFile/PreVoteOnOffChainPoll.js deleted file mode 100644 index 13b331f..0000000 --- a/tests/CommonFile/PreVoteOnOffChainPoll.js +++ /dev/null @@ -1,47 +0,0 @@ -const { test, expect } = require("@playwright/test"); -const { PreProposal } = require("./PreAction"); -const { pageLocators } = require("./Locator"); -const { TezosTestData } = require("./TestData"); - -async function PreVoteOnOffChainPoll(page){ - - test.setTimeout(10 * 60 * 1000); //To extend the time of test execution - - await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal - - await page.click(pageLocators.OffChainPoll.NewProposal); //Click on new Proposal - - await page.click(pageLocators.OffChainPoll.OffChainPoll); //Click on Off Chain Poll - - await page.fill(pageLocators.OffChainPoll.ProposalTitle, TezosTestData.OffChainPoll.ProposalTitle); //Pass the Proposal Title - - await page.fill(pageLocators.OffChainPoll.ShortDescription, TezosTestData.OffChainPoll.ShortDescription); //Pass the Short Description - - await page.fill(pageLocators.OffChainPoll.ExternalLink, TezosTestData.OffChainPoll.ExternalLink); //Pass the External Link - - await page.click(pageLocators.OffChainPoll.multipleChoice); // Click on Multiple Choice - - await page.fill(pageLocators.OffChainPoll.Choice1, TezosTestData.OffChainPoll.Choice1); //Pass the Choice 1 Data - - await page.click(pageLocators.OffChainPoll.AddChoice); //Click on Add Choice - - await page.fill(pageLocators.OffChainPoll.Choice2, TezosTestData.OffChainPoll.Choice2); //Pass The Choice 2 Data - - await page.fill(pageLocators.OffChainPoll.DD, TezosTestData.OffChainPoll.DD); //Pass The Date - - await page.fill(pageLocators.OffChainPoll.HH, TezosTestData.OffChainPoll.HH); //Pass The Hours - - await page.fill(pageLocators.OffChainPoll.MM, TezosTestData.OffChainPoll.MM); //Pass The Minute - - await page.click(pageLocators.OffChainPoll.CreateProposalButton); //Click on the Create Proposal Button - - await page.waitForTimeout(3000); //Wait Transactions - - await page.click(pageLocators.OffChainPoll.CloseButton); //Click on x Mark - - -} - -module.exports= { - PreVoteOnOffChainPoll -} \ No newline at end of file diff --git a/tests/CommonFile/TestData.js b/tests/CommonFile/TestData.js index 92f16f6..df66671 100644 --- a/tests/CommonFile/TestData.js +++ b/tests/CommonFile/TestData.js @@ -1,31 +1,30 @@ - const TezosTestData = { TokenCreator: { - TokenName: "My token name", - TokenDescription: "My Token Descriptions", + TokenName: `New${Math.floor(+new Date() / 1000)}Token`, + TokenDescription: "My Silver Descriptions", TC02TokenDescription: "", - SupplyToken: "100000000", - Decimals: "13", + SupplyToken: "1000000", + Decimals: "11", Symbol: "$", Icon: "Picture.PNG", WalletAddress: "tz1LCFwczMiEuNHcMvpqgNzzEs8f4FNBgyNK", - Amount: "100000000", + Amount: "1000000", }, - DAOCreate: { - DAOName: "Carbon black.", - TokenAddress: "KT1Dmxer8pvx8vTUX5V2k44th4DqnKsjhUya", + DAOCreate: { + DAOName: `New${Math.floor(+new Date() / 1000)}DAO`, TokenID: "0", + TokenAddress: "KT1VPiQUCrYSzicaNa5yWhndt7K19HYUCGzP", GuardianAddress: "tz1LCFwczMiEuNHcMvpqgNzzEs8f4FNBgyNK", Description: "A DAO focused on funding and promoting open-source projects related to sustainability and renewable energy.", TC04DAODescription: "", VotingDays: '00', VotingHours: '00', - VotingMinutes: "10", + VotingMinutes: "06", ExecutionDays: "00", ExecutionHours: "00", - ExecutionMinutes: "15", + ExecutionMinutes: "01", ThresholdExpiryDays: "01", ThresholdExpiryHours: "00", ThresholdExpiryMinutes: "00", @@ -34,11 +33,22 @@ const TezosTestData = { MinQuorumAmount: '1', QuorumMaxChange: '19', MaxQuorumAmount: '90', - RequiredStake: "0.1", + RequiredStake: "10", MinAmount: "1", MaxAmount: "200000", }, + OffChainPoll: { + ProposalTitle: "GOV", + ShortDescription: "This proposal aims to conduct an off-chain poll to gather community input on potential upgrades to the Tezos governance process.", + ExternalLink: "https://tezos-gov-upgrades.com", + Choice1: "Democracy", + Choice2: "Exploration", + DD: "00", + HH: "00", + MM: "20", + }, + ChangeConfiguration: { ProposalFee: "14", ReturnedTokenPercentage: "63" @@ -53,25 +63,19 @@ const TezosTestData = { }, TransferToken: { - RecipientAddress: "tz1MBFA5nJgPgkp1ThXHcSs4YLuUrHmUM1Ef", + RecipientAddress: "tz1MBFA5nJgPgkp1ThXHcSs4YLuUrHmUM1Ef", Asset: "$", Amount: "12", AgoraPostID: "0", }, - TransferNFT: { - - }, - EditRegistry: { Key: "Home ", Value: "Documents", - }, AddLambda: { MichelsonCode: "Extract the lambda and an integer from the parameter", - }, RemoveLambda: { @@ -79,28 +83,14 @@ const TezosTestData = { }, ExecuteLambda: { - LambdaArgumentsCode: "Write Michelson Code For the Input", LambdaParams: "Enter the values for the given params in a JSON/JavaScript Object format.", - }, VoteOnProposal: { Amount: "300000", - }, - - OffChainPoll: { - ProposalTitle: 'governance', - ShortDescription: "This proposal aims to conduct an off-chain poll to gather community input on potential upgrades to the Tezos governance process.", - ExternalLink: "https://tezos-gov-upgrades.com", - Choice1: "Democracy", - Choice2: "Exploration", - DD: "00", - HH: "00", - MM: "20", - }, TokenStaking: { Amount: "20" @@ -109,6 +99,7 @@ const TezosTestData = { TokenWithdrawal: { Amount: "50", }, - } -export { TezosTestData }; \ No newline at end of file +const DAOName = TezosTestData.DAOCreate.DAOName; + +export { TezosTestData, DAOName }; \ No newline at end of file diff --git a/tests/TC01/TC01-01_CreateToken.spec.js b/tests/TC01/TC01-01_CreateToken.spec.js index 951c246..64c641b 100644 --- a/tests/TC01/TC01-01_CreateToken.spec.js +++ b/tests/TC01/TC01-01_CreateToken.spec.js @@ -1,54 +1,61 @@ const { test } = require("@playwright/test"); const { changeNetwork } = require("../CommonFile/Action"); const { pageLocators } = require("../CommonFile/Locator"); -const { TezosTestData } = require("../CommonFile/TestData"); + +const { TezosTestData } = require("../CommonFile/TestData"); - test("Test Case 1: Successful Token Creation", async ({ page }) => { +global.sharedData = {}; // Initialize a global object - test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes +test("Test Case 1: Successful Token Creation", async ({ page }) => { - await changeNetwork(page); //PreConditions Open URL and Selecting the Ghost-net + test.setTimeout(5 * 60 * 1000); //Extending Test Case timeout to 5 minutes - await page.click(pageLocators.TokenCreator.CreateDAO); //Select A Create New DAO + await changeNetwork(page); //PreConditions Open URL and Selecting the Ghost-net - await page.click(pageLocators.TokenCreator.GovernanceToken); //Selecting the Governance Token + await page.click(pageLocators.TokenCreator.CreateDAO); //Select A Create New DAO - await page.fill(pageLocators.TokenCreator.TokenName, TezosTestData.TokenCreator.TokenName); //Pass The Token Name + await page.click(pageLocators.TokenCreator.GovernanceToken); //Selecting the Governance Token - await page.fill(pageLocators.TokenCreator.TokenDescription, TezosTestData.TokenCreator.TokenDescription); //Pass The Token Description + await page.fill(pageLocators.TokenCreator.TokenName, TezosTestData.TokenCreator.TokenName); //Pass The Token Name - await page.fill(pageLocators.TokenCreator.TotalSupply, TezosTestData.TokenCreator.SupplyToken); //Total Supply of Tokens + await page.fill(pageLocators.TokenCreator.TokenDescription, TezosTestData.TokenCreator.TokenDescription); //Pass The Token Description - await page.fill(pageLocators.TokenCreator.Decimals, TezosTestData.TokenCreator.Decimals); //Pass The Decimals + await page.fill(pageLocators.TokenCreator.TotalSupply, TezosTestData.TokenCreator.SupplyToken); //Total Supply of Tokens - await page.fill(pageLocators.TokenCreator.Symbol, TezosTestData.TokenCreator.Symbol); //Pass The Symbol for token + await page.fill(pageLocators.TokenCreator.Decimals, TezosTestData.TokenCreator.Decimals); //Pass The Decimals - await page.fill(pageLocators.TokenCreator.Icon, TezosTestData.TokenCreator.Icon); //Pass The Icon for Token + await page.fill(pageLocators.TokenCreator.Symbol, TezosTestData.TokenCreator.Symbol); //Pass The Symbol for token - await page.click(pageLocators.TokenCreator.ContinueButton1); //Click On Continue Button + await page.fill(pageLocators.TokenCreator.Icon, TezosTestData.TokenCreator.Icon); //Pass The Icon for Token - await page.fill(pageLocators.TokenCreator.WalletAddress, TezosTestData.TokenCreator.WalletAddress); //Pass The Wallet Address + await page.click(pageLocators.TokenCreator.ContinueButton1); //Click On Continue Button - await page.fill(pageLocators.TokenCreator.Amount, TezosTestData.TokenCreator.Amount); //Pass The Amount + await page.fill(pageLocators.TokenCreator.WalletAddress, TezosTestData.TokenCreator.WalletAddress); //Pass The Wallet Address - await page.click(pageLocators.TokenCreator.ContinueButton2); //Click on Continue Button + await page.fill(pageLocators.TokenCreator.Amount, TezosTestData.TokenCreator.Amount); //Pass The Amount - await page.click(pageLocators.TokenCreator.launch); //Click on launch button + await page.click(pageLocators.TokenCreator.ContinueButton2); //Click on Continue Button - await page.waitForTimeout(30000); //Wait for the Token Create + await page.click(pageLocators.TokenCreator.launch); //Click on launch button - const content = await page.content(); //Assume Page + await page.waitForTimeout(30000); //Wait for the Token Create - const isTextVisible = content.includes(pageLocators.TokenCreator.DeployText, { visible: true }); //Verify that text visible on the webpage + const content = await page.content(); //Assume Page - await page.waitForSelector(pageLocators.TokenCreator.ConsoleAddress); //Wait for find the Element + const isTextVisible = content.includes(pageLocators.TokenCreator.DeployText, { visible: true }); //Verify that text visible on the webpage - const element = await page.$(pageLocators.TokenCreator.ConsoleAddress); // get The element + console.log(isTextVisible); //console the results of Token - const textContent = await element.innerText(); //get the text From this element + await page.waitForSelector(pageLocators.TokenCreator.ConsoleAddress); //Wait for find the Element - console.log('Token Address:', textContent); // Console The test Present on the Webpage + const element = await page.$(pageLocators.TokenCreator.ConsoleAddress); // get The element - console.log("The token is successfully created and the user is redirected to a confirmation page with the details of the newly created token."); + const textContent = await element.innerText(); //get the text From this element + + console.log('Token Address:', textContent); // Console The token Address + + global.sharedData.tokenAddress = textContent; // Share the Token Address with other test cases using global.sharedData + + console.log("The token is successfully created and the user is redirected to a confirmation page with the details of the newly created token."); + +}); - }); diff --git a/tests/TC01/TC01-02_TokenValues.spec.js b/tests/TC01/TC01-02_TokenValues.spec.js index 6b77015..4361d0e 100644 --- a/tests/TC01/TC01-02_TokenValues.spec.js +++ b/tests/TC01/TC01-02_TokenValues.spec.js @@ -5,7 +5,7 @@ const { TezosTestData } = require("../CommonFile/TestData"); test("Test Case 2: Token Creation with Various Input Values", async ({ page, }) => { - test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes + test.setTimeout(5 * 60 * 1000); //Extending Test Case timeout to 5 minutes await changeNetwork(page); //PreConditions Open URL and selecting the Ghost-net diff --git a/tests/TC01/TC01-03_CreateDAO.spec.js b/tests/TC01/TC01-03_CreateDAO.spec.js index f05e641..f52eb2a 100644 --- a/tests/TC01/TC01-03_CreateDAO.spec.js +++ b/tests/TC01/TC01-03_CreateDAO.spec.js @@ -3,9 +3,12 @@ const { changeNetwork } = require("../CommonFile/Action"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); + test('Test Case 3 : Create DAO Successfully', async ({ page }) => { - - test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes + + const tokenAddress = global.sharedData.tokenAddress; // Access the Token Address from the shared global object + + test.setTimeout(5 * 60 * 1000); //Extending Test Case timeout to 5 minutes await changeNetwork(page); //PreConditions Open URL and Selecting the Ghost-net @@ -19,7 +22,7 @@ test('Test Case 3 : Create DAO Successfully', async ({ page }) => { await page.fill(pageLocators.DAOCreate.DAOName, TezosTestData.DAOCreate.DAOName); //Fill DAO Name - await page.fill(pageLocators.DAOCreate.TokenAddress, TezosTestData.DAOCreate.TokenAddress); //Fill Token Address + await page.fill(pageLocators.DAOCreate.TokenAddress, tokenAddress); //Fill Token Address await page.fill(pageLocators.DAOCreate.TokenID, TezosTestData.DAOCreate.TokenID); //Fill Token ID @@ -30,7 +33,7 @@ test('Test Case 3 : Create DAO Successfully', async ({ page }) => { await page.waitForTimeout(2000); //Wait For Click on Continue Button await page.click(pageLocators.DAOCreate.ContinueButton2); //Click on Continue - + await page.fill(pageLocators.DAOCreate.VotingDays, TezosTestData.DAOCreate.VotingDays); //Pass The Voting Cycle Days Duration await page.fill(pageLocators.DAOCreate.VotingHours, TezosTestData.DAOCreate.VotingHours); //Pass The Voting Cycle Hours Duration @@ -105,6 +108,8 @@ test('Test Case 3 : Create DAO Successfully', async ({ page }) => { const isTextVisible = content.includes(pageLocators.DAOCreate.DAOText, { visible: true }); //Verify that text visible on the webpage + console.log(isTextVisible); //Show the Results of True of false + console.log("The DAO is successfully created and the user is redirected to a confirmation page that links to the newly created DAO"); }) \ No newline at end of file diff --git a/tests/TC01/TC01-04_DAOValues.spec.js b/tests/TC01/TC01-04_DAOValues.spec.js index d7a6293..c687c1c 100644 --- a/tests/TC01/TC01-04_DAOValues.spec.js +++ b/tests/TC01/TC01-04_DAOValues.spec.js @@ -5,7 +5,7 @@ const { TezosTestData } = require("../CommonFile/TestData"); test('Test Case 4 : Create DAO with various input values', async ({ page }) => { - test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes + test.setTimeout(5 * 60 * 1000); //Extending Test Case timeout to 5 minutes await changeNetwork(page); //PreConditions Open URL and Selecting the Ghost-net diff --git a/tests/TC04/TC04-01_OffChainPoll.spec.js b/tests/TC02/TC02-01_OffChainPoll.spec.js similarity index 96% rename from tests/TC04/TC04-01_OffChainPoll.spec.js rename to tests/TC02/TC02-01_OffChainPoll.spec.js index edfbb3e..57e3960 100644 --- a/tests/TC04/TC04-01_OffChainPoll.spec.js +++ b/tests/TC02/TC02-01_OffChainPoll.spec.js @@ -5,7 +5,7 @@ const { TezosTestData } = require("../CommonFile/TestData"); test('Test case 1: Off Chain Poll Proposal Creation', async ({ page }) => { - test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes + test.setTimeout(5 * 60 * 1000); //Extending Test Case timeout to 5 minutes await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal diff --git a/tests/TC04/TC04-02_VoteonOffChainPoll.spec.js b/tests/TC02/TC02-02_VoteonOffChainPoll.spec.js similarity index 82% rename from tests/TC04/TC04-02_VoteonOffChainPoll.spec.js rename to tests/TC02/TC02-02_VoteonOffChainPoll.spec.js index 0bf66c0..0ec1608 100644 --- a/tests/TC04/TC04-02_VoteonOffChainPoll.spec.js +++ b/tests/TC02/TC02-02_VoteonOffChainPoll.spec.js @@ -1,11 +1,13 @@ const { test, expect } = require("@playwright/test"); const { pageLocators } = require("../CommonFile/Locator"); -const { PreVoteOnOffChainPoll } = require("../CommonFile/PreVoteOnOffChainPoll"); +const { PreProposal } = require("../CommonFile/PreAction"); const { TezosTestData } = require("../CommonFile/TestData"); test('Test case 2: Vote On Off Chain Proposal ', async ({ page }) => { - await PreVoteOnOffChainPoll(page); //PreConditions Open URL and Open Mask DAO For Proposal + test.setTimeout(5 * 60 * 1000); //Extending Test Case timeout to 5 minutes + + await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal await page.waitForTimeout(2000); //Wait for page Load diff --git a/tests/TC04/TC04-03_CorrectVoteCountOnOffChainPoll.spec.js b/tests/TC02/TC02-03_CorrectVoteCountOnOffChainPoll.spec.js similarity index 94% rename from tests/TC04/TC04-03_CorrectVoteCountOnOffChainPoll.spec.js rename to tests/TC02/TC02-03_CorrectVoteCountOnOffChainPoll.spec.js index 102bc5e..c8cbfb5 100644 --- a/tests/TC04/TC04-03_CorrectVoteCountOnOffChainPoll.spec.js +++ b/tests/TC02/TC02-03_CorrectVoteCountOnOffChainPoll.spec.js @@ -4,7 +4,7 @@ const { pageLocators } = require("../CommonFile/Locator"); test('Test case 3: Correct vote Count on Off Chain Poll ', async ({ page }) => { - test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes + test.setTimeout(5 * 60 * 1000); //Extending Test Case timeout to 5 minutes await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal diff --git a/tests/TC02/TC02-03_TransferNFT.spec.js b/tests/TC02/TC02-03_TransferNFT.spec.js deleted file mode 100644 index 96b4677..0000000 --- a/tests/TC02/TC02-03_TransferNFT.spec.js +++ /dev/null @@ -1,30 +0,0 @@ -const { test, expect } = require("@playwright/test"); -const { PreProposal } = require("../CommonFile/PreAction"); -const { pageLocators } = require("../CommonFile/Locator"); -const { TezosTestData } = require("../CommonFile/TestData"); -const path = require('path'); - -test('Test case 3: Transfer NFT ', async ({ page, browserName }) => { - if (browserName !== 'chromium') { - return; - } - await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal - - try { - - test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes - - await page.click(pageLocators.OffChainPoll.cycle); // Click on Running Cycle Status - - await page.click(pageLocators.TransferToken.Treasury); //Click on the Treasury - - await page.click(pageLocators.TransferNFT.NFTs); //Click on the NFT Button - - console.log("The proposal is successfully created and the user is redirected to a confirmation page with the details of the newly created proposal."); - - } - catch (error) { - console.log("Now Voting Cycle is Running"); - } - -}) \ No newline at end of file diff --git a/tests/TC03/TC03-01_TokenDeposit.spec.js b/tests/TC03/TC03-01_TokenDeposit.spec.js new file mode 100644 index 0000000..ef84fdc --- /dev/null +++ b/tests/TC03/TC03-01_TokenDeposit.spec.js @@ -0,0 +1,34 @@ +const { test, expect } = require("@playwright/test"); +const { PreProposal } = require("../CommonFile/PreAction"); +const { pageLocators } = require("../CommonFile/Locator"); +const { TezosTestData } = require("../CommonFile/TestData"); + +test('Test case 1: Successful Token Deposit', async ({ page }) => { + + test.setTimeout(5 * 60 * 1000); //Extending Test Case timeout to 5 minutes + + await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal + + await page.click(pageLocators.TokenStaking.User); //Click on the User ON the Tab + + await page.click(pageLocators.TokenStaking.Deposit); //Click on the Deposit Button + + await page.click(pageLocators.TokenStaking.UseMax); //Click on the User Max + + await page.waitForTimeout(2000); //Wait for the type numbers in text box + + await page.click(pageLocators.TokenStaking.Submit); //Click on the Submit Button + + await page.waitForTimeout(30000); //Wait for Transaction Confirmed + + const content = await page.content(); //Assume Page + + const isTextVisible = content.includes(pageLocators.TokenStaking.TransactionText, { visible: true }); //Verify that text visible on the webpage + + console.log(isTextVisible); //Console the results of Text + + expect(isTextVisible).toBe(true, "The tokens are not successfully staked or the text is not visible"); + + console.log("The tokens are successfully staked and and show up as available balance field"); + +}) \ No newline at end of file diff --git a/tests/TC03/TC03-02_AcceptDelegation.spec.js b/tests/TC03/TC03-02_AcceptDelegation.spec.js new file mode 100644 index 0000000..892dc5a --- /dev/null +++ b/tests/TC03/TC03-02_AcceptDelegation.spec.js @@ -0,0 +1,32 @@ +const { test, expect } = require("@playwright/test"); +const { PreProposal } = require("../CommonFile/PreAction"); +const { pageLocators } = require("../CommonFile/Locator"); +const { TezosTestData } = require("../CommonFile/TestData"); + +test('Test case 2: Accept Delegations', async ({ page }) => { + + test.setTimeout(5 * 60 * 1000); //Extending Test Case timeout to 5 minutes + + await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal + + await page.click(pageLocators.TokenStaking.User); //Click on the User ON the Tab + + await page.click(pageLocators.AcceptDelegation.EditButton); //Click on the Edit Button + + await page.click(pageLocators.AcceptDelegation.AcceptButton); //click on Accept Button + + await page.click(pageLocators.AcceptDelegation.SubmitButton); //Click on the Submit Button + + await page.waitForTimeout(30000); //Wait for Transaction Confirmed + + const content = await page.content(); //Assume Page + + const isTextVisible = content.includes(pageLocators.AcceptDelegation.TransactionText, { visible: true }); //Verify that text visible on the webpage + + console.log(isTextVisible); //Console the results of Text + + expect(isTextVisible).toBe(true, "The Accept delegation are not successfully accepted."); + + console.log("The Accepted Delegation transaction are successfully passed."); + +}) \ No newline at end of file diff --git a/tests/TC02/TC02-01_TransferTokens.spec.js b/tests/TC04/TC04-01_TransferTokens.spec.js similarity index 90% rename from tests/TC02/TC02-01_TransferTokens.spec.js rename to tests/TC04/TC04-01_TransferTokens.spec.js index 03e2de9..b8443d7 100644 --- a/tests/TC02/TC02-01_TransferTokens.spec.js +++ b/tests/TC04/TC04-01_TransferTokens.spec.js @@ -3,16 +3,13 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 1: Transfer Tokens', async ({ page, browserName }) => { - if (browserName !== 'chromium') { - return; - } - +test('Test case 1: Transfer Tokens', async ({ page }) => { + await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal try { - test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes + test.setTimeout(5 * 60 * 1000); //Extending Test Case timeout to 5 minutes await page.click(pageLocators.OffChainPoll.cycle); // Click on Running Cycle Status diff --git a/tests/TC02/TC02-02_ChangeConfiguration.spec.js b/tests/TC04/TC04-02_ChangeConfiguration.spec.js similarity index 88% rename from tests/TC02/TC02-02_ChangeConfiguration.spec.js rename to tests/TC04/TC04-02_ChangeConfiguration.spec.js index 0fc5b88..54edf19 100644 --- a/tests/TC02/TC02-02_ChangeConfiguration.spec.js +++ b/tests/TC04/TC04-02_ChangeConfiguration.spec.js @@ -3,16 +3,13 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 2: Change Configuration', async ({ page, browserName }) => { - if (browserName !== 'chromium') { - return; - } +test('Test case 2: Change Configuration', async ({ page }) => { await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal try { - test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes + test.setTimeout(5 * 60 * 1000); //Extending Test Case timeout to 5 minutes await page.click(pageLocators.OffChainPoll.cycle); // Click on Running Cycle Status diff --git a/tests/TC02/TC02-04_EditRegistry.spec.js b/tests/TC04/TC04-03_EditRegistry.spec.js similarity index 87% rename from tests/TC02/TC02-04_EditRegistry.spec.js rename to tests/TC04/TC04-03_EditRegistry.spec.js index 4e901b6..33a588b 100644 --- a/tests/TC02/TC02-04_EditRegistry.spec.js +++ b/tests/TC04/TC04-03_EditRegistry.spec.js @@ -3,15 +3,13 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 4: Edit Registry', async ({ page, browserName }) => { - if (browserName !== 'chromium') { - return; - } +test('Test case 3: Edit Registry', async ({ page }) => { + await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal try { - test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes + test.setTimeout(5 * 60 * 1000); //Extending Test Case timeout to 5 minutes await page.click(pageLocators.OffChainPoll.cycle); // Click on Running Cycle Status diff --git a/tests/TC02/TC02-05_AddLambda.spec.js b/tests/TC04/TC04-04_AddLambda.spec.js similarity index 87% rename from tests/TC02/TC02-05_AddLambda.spec.js rename to tests/TC04/TC04-04_AddLambda.spec.js index 48251fe..1cf1022 100644 --- a/tests/TC02/TC02-05_AddLambda.spec.js +++ b/tests/TC04/TC04-04_AddLambda.spec.js @@ -3,15 +3,13 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 5: Add Lambda ', async ({ page, browserName }) => { - if (browserName !== 'chromium') { - return; - } +test('Test case 4: Add Lambda ', async ({ page }) => { + await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal try { - test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes + test.setTimeout(5 * 60 * 1000); //Extending Test Case timeout to 5 minutes await page.click(pageLocators.OffChainPoll.cycle); // Click on Running Cycle Status diff --git a/tests/TC02/TC02-06_RemoveLambda.spec.js b/tests/TC04/TC04-05_RemoveLambda.spec.js similarity index 88% rename from tests/TC02/TC02-06_RemoveLambda.spec.js rename to tests/TC04/TC04-05_RemoveLambda.spec.js index f79b8d3..9c4a25f 100644 --- a/tests/TC02/TC02-06_RemoveLambda.spec.js +++ b/tests/TC04/TC04-05_RemoveLambda.spec.js @@ -3,15 +3,13 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 6: Remove Lambda ', async ({ page, browserName }) => { - if (browserName !== 'chromium') { - return; - } +test('Test case 5: Remove Lambda ', async ({ page }) => { + await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal try { - test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes + test.setTimeout(5 * 60 * 1000); //Extending Test Case timeout to 5 minutes await page.click(pageLocators.OffChainPoll.cycle); // Click on Running Cycle Status diff --git a/tests/TC02/TC02-08_ChangeDelegate.spec.js b/tests/TC04/TC04-06_ChangeDelegate.spec.js similarity index 87% rename from tests/TC02/TC02-08_ChangeDelegate.spec.js rename to tests/TC04/TC04-06_ChangeDelegate.spec.js index 7692be0..d8fc73a 100644 --- a/tests/TC02/TC02-08_ChangeDelegate.spec.js +++ b/tests/TC04/TC04-06_ChangeDelegate.spec.js @@ -3,15 +3,13 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 8: Change Delegate', async ({ page, browserName }) => { - if (browserName !== 'chromium') { - return; - } +test('Test case 6: Change Delegate', async ({ page }) => { + await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal try { - test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes + test.setTimeout(5 * 60 * 1000); //Extending Test Case timeout to 5 minutes await page.click(pageLocators.OffChainPoll.cycle); // Click on Running Cycle Status diff --git a/tests/TC02/TC02-09_ChangeGuardian.spec.js b/tests/TC04/TC04-07_ChangeGuardian.spec.js similarity index 87% rename from tests/TC02/TC02-09_ChangeGuardian.spec.js rename to tests/TC04/TC04-07_ChangeGuardian.spec.js index 8f8ea0c..dcb8341 100644 --- a/tests/TC02/TC02-09_ChangeGuardian.spec.js +++ b/tests/TC04/TC04-07_ChangeGuardian.spec.js @@ -3,15 +3,13 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 9: Change Guardian', async ({ page, browserName }) => { - if (browserName !== 'chromium') { - return; - } +test('Test case 7: Change Guardian', async ({ page }) => { + await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal try { - test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes + test.setTimeout(5 * 60 * 1000); //Extending Test Case timeout to 5 minutes await page.click(pageLocators.OffChainPoll.cycle); // Click on Running Cycle Status diff --git a/tests/TC03/TC03-02_ProposalDrop.spec.js b/tests/TC05/TC05-01_ProposalDrop.spec.js similarity index 67% rename from tests/TC03/TC03-02_ProposalDrop.spec.js rename to tests/TC05/TC05-01_ProposalDrop.spec.js index d6b3e15..fd2224f 100644 --- a/tests/TC03/TC03-02_ProposalDrop.spec.js +++ b/tests/TC05/TC05-01_ProposalDrop.spec.js @@ -3,21 +3,17 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); +test('Test case 1: Drop the Active proposal', async ({ page }) => { -test('Test case 2: Drop the Active proposal', async ({ page, browserName }) => { - if (browserName !== 'chromium') { - return; - } + test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal try { - test.setTimeout( 20* 60 * 1000); //Extending Test Case timeout to 10 minutes + await page.click(pageLocators.VoteOnProposal.VotingCycle); //Click on the Voting Cycle - await page.click(pageLocators.VoteOnProposal.VotingCycle); // Click on Running Cycle Status - - await page.click(pageLocators.VoteOnProposal.Active); //Click on the Active Button + await page.click(pageLocators.VoteOnProposal.Active); //Click on the active Proposal await page.click(pageLocators.ProposalDrop.ProposalDrop); //Click on the Drop Proposal @@ -28,10 +24,10 @@ test('Test case 2: Drop the Active proposal', async ({ page, browserName }) = const isTextVisible = content.includes(pageLocators.ProposalDrop.TransactionText, { visible: true }); //Verify that text visible on the webpage console.log(isTextVisible); //Prints True or false for is Text Visible - + } catch (error) { - console.log("Now Creating Cycle is running"); + console.log("Error: No Proposal to drop"); } }) \ No newline at end of file diff --git a/tests/TC03/TC03-01_VoteOnProposal.spec.js b/tests/TC05/TC05-02_VoteOnProposal.spec.js similarity index 76% rename from tests/TC03/TC03-01_VoteOnProposal.spec.js rename to tests/TC05/TC05-02_VoteOnProposal.spec.js index 266e5c0..05335d0 100644 --- a/tests/TC03/TC03-01_VoteOnProposal.spec.js +++ b/tests/TC05/TC05-02_VoteOnProposal.spec.js @@ -3,18 +3,14 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); +test('Test case 1: Vote On On-Chain Proposal ', async ({ page }) => { -test('Test case 1: Vote On On-Chain Proposal ', async ({ page, browserName }) => { - if (browserName !== 'chromium') { - return; - } - + test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes + await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal try { - test.setTimeout(20 * 60 * 1000); //Extending Test Case timeout to 10 minutes - await page.click(pageLocators.VoteOnProposal.VotingCycle); // Click on Running Cycle Status await page.click(pageLocators.VoteOnProposal.Active); //Click on the Active Button @@ -27,6 +23,14 @@ test('Test case 1: Vote On On-Chain Proposal ', async ({ page, browserName }) = await page.click(pageLocators.VoteOnProposal.Submit); //Click on the Submit + await page.waitForTimeout(30000); //wait for the execute transaction + + const content = await page.content(); //Assume Page + + const isTextVisible = content.includes(pageLocators.VoteOnProposal.TransactionText, { visible: true }); //Verify that text visible on the webpage + + console.log(isTextVisible); //Prints True or false for is Text Visible + await page.waitForTimeout(2000); //Wait for Submit the Proposal await page.click(pageLocators.VoteOnProposal.View); //Click on the View Button diff --git a/tests/TC06/TC06-01ProposalExecution.spec.js b/tests/TC06/TC06-01ProposalExecution.spec.js deleted file mode 100644 index b01479a..0000000 --- a/tests/TC06/TC06-01ProposalExecution.spec.js +++ /dev/null @@ -1,33 +0,0 @@ -const { test, expect } = require("@playwright/test"); -const { PreProposal } = require("../CommonFile/PreAction"); -const { pageLocators } = require("../CommonFile/Locator"); - -test('Test case 1: On-Chain Proposal Execution', async ({ page, browserName }) => { - if (browserName !== 'chromium') { - return; - } - - test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes - - await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal - - try { - - await page.click(pageLocators.OffChainPoll.cycle); // Click on Running Cycle Status - - await page.waitForSelector(pageLocators.ProposalExecution.Execute, { click: true }) //Validate That Button is clickable or not - - await page.click(pageLocators.ProposalExecution.Execute); //Click on Execute Button - - const content = await page.content(); //Assume Page - - const isTextVisible = content.includes(pageLocators.ProposalExecution.TransactionText, { visible: true }); //Verify that text visible on the webpage - - console.log(isTextVisible); //Prints True or false for is Text Visible - - } - catch (error) { - console.log("Error: No Passed- Executable Proposals"); - } - -}) \ No newline at end of file diff --git a/tests/TC05/TC05-01_SuccessfulTokenWithdrawal.spec.js b/tests/TC06/TC06-01_TokenWithdrawal.spec.js similarity index 93% rename from tests/TC05/TC05-01_SuccessfulTokenWithdrawal.spec.js rename to tests/TC06/TC06-01_TokenWithdrawal.spec.js index 740a4c1..96da06e 100644 --- a/tests/TC05/TC05-01_SuccessfulTokenWithdrawal.spec.js +++ b/tests/TC06/TC06-01_TokenWithdrawal.spec.js @@ -5,7 +5,7 @@ const { TezosTestData } = require("../CommonFile/TestData"); test('Test case 1: Successful Token Withdrawal', async ({ page }) => { - test.setTimeout(30* 60 * 1000); //Extending Test Case timeout to 10 minutes + test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal diff --git a/tests/TC06/TC06-02_SuccessfulTokenUnStaking.spec.js b/tests/TC06/TC06-02_SuccessfulTokenUnStaking.spec.js deleted file mode 100644 index 009e528..0000000 --- a/tests/TC06/TC06-02_SuccessfulTokenUnStaking.spec.js +++ /dev/null @@ -1,36 +0,0 @@ -const { test, expect } = require("@playwright/test"); -const { PreProposal } = require("../CommonFile/PreAction"); -const { pageLocators } = require("../CommonFile/Locator"); - -test('Test case 2: Successful Token UnStaking on Chromium', async ({ page, browserName }) => { - if (browserName !== 'chromium') { - return; - } - - test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes - - await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal - - await page.click(pageLocators.TokenStaking.User); //Click on the User Tab - - await page.waitForTimeout(5000); //wait for button visible - - try { - - await page.click(pageLocators.UnStakingToken.UnStakeVotes); //Click on UnStake Votes - - } catch (error) { - console.error("Error: No votes to unstake"); - } - - await page.waitForTimeout(3000); //Wait For Complete The Transaction - - const content = await page.content(); //Assume Page - - const isTextVisible = content.includes(pageLocators.UnStakingToken.TransactionText, { visible: true }); //Verify that text visible on the webpage - - console.log(isTextVisible); - - console.log("The tokens are successfully UnStaked and show up in the Available Balance field.") - -}) \ No newline at end of file diff --git a/tests/TC05/TC05-02_SuccessfulTokenStaking.spec.js b/tests/TC06/TC06-02_TokenStaking.spec.js similarity index 97% rename from tests/TC05/TC05-02_SuccessfulTokenStaking.spec.js rename to tests/TC06/TC06-02_TokenStaking.spec.js index 41c78d1..24c4628 100644 --- a/tests/TC05/TC05-02_SuccessfulTokenStaking.spec.js +++ b/tests/TC06/TC06-02_TokenStaking.spec.js @@ -1,7 +1,6 @@ const { test, expect } = require("@playwright/test"); const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); -const path = require('path'); const { TezosTestData } = require("../CommonFile/TestData"); test('Test case 2: Successful Token Staking', async ({ page }) => { From b6455a446b50b6c4aa92e649a8ebf4ea3b7e7325 Mon Sep 17 00:00:00 2001 From: w3rahul Date: Tue, 12 Sep 2023 13:59:15 +0530 Subject: [PATCH 13/36] WIP:Test Case - Module TC06 and More --- .github/workflows/Test.yml | 32 ++++++-------------------------- 1 file changed, 6 insertions(+), 26 deletions(-) diff --git a/.github/workflows/Test.yml b/.github/workflows/Test.yml index 92114d8..1fe5d92 100644 --- a/.github/workflows/Test.yml +++ b/.github/workflows/Test.yml @@ -27,26 +27,6 @@ jobs: with: node-version: 18 - # TODO: Caches not working properly as of now. Debug it later - - name: Cache node modules - id: cache-npm - uses: actions/cache@v3 - env: - cache-name: cache-node-modules - with: - # npm cache files are stored in `~/.npm` on Linux/macOS - path: ~/.npm - key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-build-${{ env.cache-name }}- - ${{ runner.os }}-build- - ${{ runner.os }}- - - - if: ${{ steps.cache-npm.outputs.cache-hit != 'true' }} - name: List the state of node modules - continue-on-error: true - run: npm list - - name: Install dependencies run: npm ci @@ -63,7 +43,7 @@ jobs: with: branch: gh-pages folder: playwright-report # The folder the action should deploy. - target-folder: tests/pr-01/tc-01/ + target-folder: tests/pr-05/tc-01/ - name: TC02 - Run Playwright tests run: npm run test:tc02 @@ -75,7 +55,7 @@ jobs: with: branch: gh-pages folder: playwright-report # The folder the action should deploy. - target-folder: tests/pr-01/tc-02/ + target-folder: tests/pr-05/tc-02/ - name: TC03 - Run Playwright tests run: npm run test:tc03 @@ -87,7 +67,7 @@ jobs: with: branch: gh-pages folder: playwright-report # The folder the action should deploy. - target-folder: tests/pr-01/tc-03/ + target-folder: tests/pr-05/tc-03/ - name: TC04 - Run Playwright tests run: npm run test:tc04 @@ -99,7 +79,7 @@ jobs: with: branch: gh-pages folder: playwright-report # The folder the action should deploy. - target-folder: tests/pr-01/tc-04/ + target-folder: tests/pr-05/tc-04/ - name: TC05 - Run Playwright tests run: npm run test:tc05 @@ -111,7 +91,7 @@ jobs: with: branch: gh-pages folder: playwright-report # The folder the action should deploy. - target-folder: tests/pr-01/tc-05/ + target-folder: tests/pr-05/tc-05/ - name: TC06 - Run Playwright tests run: npm run test:tc06 @@ -123,4 +103,4 @@ jobs: with: branch: gh-pages folder: playwright-report # The folder the action should deploy. - target-folder: tests/pr-01/tc-06/ \ No newline at end of file + target-folder: tests/pr-05/tc-06/ \ No newline at end of file From 619b2ece010f766885eee78e76782ba3ca9ba830 Mon Sep 17 00:00:00 2001 From: w3rahul Date: Tue, 12 Sep 2023 14:08:39 +0530 Subject: [PATCH 14/36] WIP:Test Case - Module TC06 and More --- .github/workflows/Test.yml | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/.github/workflows/Test.yml b/.github/workflows/Test.yml index 1fe5d92..5ab0056 100644 --- a/.github/workflows/Test.yml +++ b/.github/workflows/Test.yml @@ -37,70 +37,76 @@ jobs: run: npm run test:tc01 env: WEBAPP_URL: ${{ vars.WEBAPP_URL }} + BROWSER: chromium - name: TC01 - Deploy Report for TC 01πŸš€ uses: JamesIves/github-pages-deploy-action@v4 with: branch: gh-pages - folder: playwright-report # The folder the action should deploy. - target-folder: tests/pr-05/tc-01/ + folder: playwright-report + target-folder: tests/pr-03/tc-01/ - name: TC02 - Run Playwright tests run: npm run test:tc02 env: WEBAPP_URL: ${{ vars.WEBAPP_URL }} + BROWSER: chromium - name: TC02 - Deploy Report for TC 02πŸš€ uses: JamesIves/github-pages-deploy-action@v4 with: branch: gh-pages - folder: playwright-report # The folder the action should deploy. - target-folder: tests/pr-05/tc-02/ + folder: playwright-report + target-folder: tests/pr-03/tc-02/ - name: TC03 - Run Playwright tests run: npm run test:tc03 env: WEBAPP_URL: ${{ vars.WEBAPP_URL }} + BROWSER: chromium - name: TC03 - Deploy Report for TC 03πŸš€ uses: JamesIves/github-pages-deploy-action@v4 with: branch: gh-pages - folder: playwright-report # The folder the action should deploy. - target-folder: tests/pr-05/tc-03/ + folder: playwright-report + target-folder: tests/pr-03/tc-03/ - name: TC04 - Run Playwright tests run: npm run test:tc04 env: WEBAPP_URL: ${{ vars.WEBAPP_URL }} + BROWSER: chromium - name: TC04 - Deploy Report for TC 04πŸš€ uses: JamesIves/github-pages-deploy-action@v4 with: branch: gh-pages - folder: playwright-report # The folder the action should deploy. - target-folder: tests/pr-05/tc-04/ + folder: playwright-report + target-folder: tests/pr-03/tc-04/ - name: TC05 - Run Playwright tests run: npm run test:tc05 env: WEBAPP_URL: ${{ vars.WEBAPP_URL }} + BROWSER: chromium - name: TC05 - Deploy Report for TC 05πŸš€ uses: JamesIves/github-pages-deploy-action@v4 with: branch: gh-pages - folder: playwright-report # The folder the action should deploy. - target-folder: tests/pr-05/tc-05/ + folder: playwright-report + target-folder: tests/pr-03/tc-05/ - name: TC06 - Run Playwright tests run: npm run test:tc06 env: WEBAPP_URL: ${{ vars.WEBAPP_URL }} + BROWSER: chromium - name: TC06 - Deploy Report for TC 06πŸš€ uses: JamesIves/github-pages-deploy-action@v4 with: branch: gh-pages - folder: playwright-report # The folder the action should deploy. - target-folder: tests/pr-05/tc-06/ \ No newline at end of file + folder: playwright-report + target-folder: tests/pr-03/tc-06/ \ No newline at end of file From 223eeff8029dff07f97d370b6ef8566206ca8a24 Mon Sep 17 00:00:00 2001 From: w3rahul Date: Tue, 12 Sep 2023 14:10:49 +0530 Subject: [PATCH 15/36] WIP:Test Case - Module TC06 and More --- .github/workflows/Test.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/Test.yml b/.github/workflows/Test.yml index 5ab0056..a7e6f75 100644 --- a/.github/workflows/Test.yml +++ b/.github/workflows/Test.yml @@ -44,7 +44,7 @@ jobs: with: branch: gh-pages folder: playwright-report - target-folder: tests/pr-03/tc-01/ + target-folder: tests/pr-05/tc-01/ - name: TC02 - Run Playwright tests run: npm run test:tc02 @@ -57,7 +57,7 @@ jobs: with: branch: gh-pages folder: playwright-report - target-folder: tests/pr-03/tc-02/ + target-folder: tests/pr-05/tc-02/ - name: TC03 - Run Playwright tests run: npm run test:tc03 @@ -70,7 +70,7 @@ jobs: with: branch: gh-pages folder: playwright-report - target-folder: tests/pr-03/tc-03/ + target-folder: tests/pr-05/tc-03/ - name: TC04 - Run Playwright tests run: npm run test:tc04 @@ -83,7 +83,7 @@ jobs: with: branch: gh-pages folder: playwright-report - target-folder: tests/pr-03/tc-04/ + target-folder: tests/pr-05/tc-04/ - name: TC05 - Run Playwright tests run: npm run test:tc05 @@ -96,7 +96,7 @@ jobs: with: branch: gh-pages folder: playwright-report - target-folder: tests/pr-03/tc-05/ + target-folder: tests/pr-05/tc-05/ - name: TC06 - Run Playwright tests run: npm run test:tc06 @@ -109,4 +109,4 @@ jobs: with: branch: gh-pages folder: playwright-report - target-folder: tests/pr-03/tc-06/ \ No newline at end of file + target-folder: tests/pr-05/tc-06/ \ No newline at end of file From fa7c4302434e2b70a297d64a296c98fc4a0e3f4f Mon Sep 17 00:00:00 2001 From: w3rahul Date: Tue, 12 Sep 2023 14:40:58 +0530 Subject: [PATCH 16/36] Test Case - Module TC 05 and more --- playwright.config.js | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/playwright.config.js b/playwright.config.js index b15af2e..dc31cf0 100644 --- a/playwright.config.js +++ b/playwright.config.js @@ -38,16 +38,6 @@ module.exports = defineConfig({ use: { ...devices['Desktop Chrome'] }, }, - { - name: 'firefox', - use: { ...devices['Desktop Firefox'] }, - }, - - { - name: 'webkit', - use: { ...devices['Desktop Safari'] }, - }, - /* Test against mobile viewports. */ // { // name: 'Mobile Chrome', From d9a521104b1a0d6ad39a5b48ce9ab6520108d37b Mon Sep 17 00:00:00 2001 From: w3rahul Date: Thu, 14 Sep 2023 11:28:25 +0530 Subject: [PATCH 17/36] WIP: Test Case - Module TC 05 and more --- playwright.config.js | 3 +- tests/CommonFile/Locator.js | 7 ++- tests/TC01/TC01-03_CreateDAO.spec.js | 2 +- tests/TC04/TC04-06_ExecuteLambda.spec.js | 57 +++++++++++++++++++ ...spec.js => TC04-07_ChangeDelegate.spec.js} | 2 +- ...spec.js => TC04-08_ChangeGuardian.spec.js} | 2 +- tests/TC07/TC07-01_ProposalExecution.spec.js | 30 ++++++++++ tests/TC07/TC07-02_TokenUnStaking.spec.js | 30 ++++++++++ 8 files changed, 126 insertions(+), 7 deletions(-) create mode 100644 tests/TC04/TC04-06_ExecuteLambda.spec.js rename tests/TC04/{TC04-06_ChangeDelegate.spec.js => TC04-07_ChangeDelegate.spec.js} (96%) rename tests/TC04/{TC04-07_ChangeGuardian.spec.js => TC04-08_ChangeGuardian.spec.js} (96%) create mode 100644 tests/TC07/TC07-01_ProposalExecution.spec.js create mode 100644 tests/TC07/TC07-02_TokenUnStaking.spec.js diff --git a/playwright.config.js b/playwright.config.js index dc31cf0..d4af5fb 100644 --- a/playwright.config.js +++ b/playwright.config.js @@ -19,7 +19,8 @@ module.exports = defineConfig({ /* Retry on CI only */ retries: process.env.CI ? 2 : 0, /* Opt out of parallel tests on CI. */ - workers: process.env.CI ? 1 : undefined, + workers: 1 , + // workers: process.env.CI ? 1 : undefined, /* Reporter to use. See https://playwright.dev/docs/test-reporters */ reporter: 'html', /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ diff --git a/tests/CommonFile/Locator.js b/tests/CommonFile/Locator.js index bbb9779..a263725 100644 --- a/tests/CommonFile/Locator.js +++ b/tests/CommonFile/Locator.js @@ -85,7 +85,8 @@ const pageLocators = { OffChainPoll: { - DAO: `//p[text()='${DAOName}']`, + // DAO: `//p[text()='${DAOName}']`, + DAO:"//p[text()='New1694521222DAO'] ", Proposal: "//p[text()='Proposals']", cycle: "//p[text()='Creating']", NewProposal: "//span[text()='New Proposal']", @@ -172,8 +173,8 @@ const pageLocators = { ExecuteLambda: "//p[text()='Execute Lambda']", SearchBox: "#combo-box-demo", Dropdown: "//button[@class='MuiButtonBase-root MuiIconButton-root MuiAutocomplete-popupIndicator']", - LambdaArgumentsCode: "//textarea[@placeholder='Write Michelson Code for the input Paramerers of your Lambda']", - LambdaParams: "Enter the values for the given params in a JSON/JavaScript Object format", + LambdaArgumentsCode: ".npm__react-simple-code-editor__textarea:nth-child(2)", + LambdaParams: ".npm__react-simple-code-editor__textarea:nth-child(3)", SubmitButton: "//span[text()='Submit']", TransactionText: "Execute Lambda proposal transaction confirmed", }, diff --git a/tests/TC01/TC01-03_CreateDAO.spec.js b/tests/TC01/TC01-03_CreateDAO.spec.js index f52eb2a..ab2b641 100644 --- a/tests/TC01/TC01-03_CreateDAO.spec.js +++ b/tests/TC01/TC01-03_CreateDAO.spec.js @@ -6,7 +6,7 @@ const { TezosTestData } = require("../CommonFile/TestData"); test('Test Case 3 : Create DAO Successfully', async ({ page }) => { - const tokenAddress = global.sharedData.tokenAddress; // Access the Token Address from the shared global object + const tokenAddress = global.sharedData.tokenAddress; // Access the Token Address from the shared global object test.setTimeout(5 * 60 * 1000); //Extending Test Case timeout to 5 minutes diff --git a/tests/TC04/TC04-06_ExecuteLambda.spec.js b/tests/TC04/TC04-06_ExecuteLambda.spec.js new file mode 100644 index 0000000..cb07292 --- /dev/null +++ b/tests/TC04/TC04-06_ExecuteLambda.spec.js @@ -0,0 +1,57 @@ +const { test, expect } = require("@playwright/test"); +const { PreProposal } = require("../CommonFile/PreAction"); +const { pageLocators } = require("../CommonFile/Locator"); +const { TezosTestData } = require("../CommonFile/TestData"); + +test('Test case 6: Execute Lambda ', async ({ page }) => { + + test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes + + await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal + + try { + + await page.click(pageLocators.OffChainPoll.cycle); // Click on Running Cycle Status + + await page.click(pageLocators.OffChainPoll.NewProposal); //Click On New Proposal + + await page.click(pageLocators.ExecuteLambda.ExecuteLambda); //Click on Execute Lambda + + await page.click(pageLocators.ExecuteLambda.Dropdown); //Click on the DropDown + + await page.keyboard.press('ArrowDown'); //Click on DownArrow Button + + await page.keyboard.press('ArrowDown'); //Click on DownArrow Button + + await page.keyboard.press('Enter'); //Click on Enter Button + + await page.click(pageLocators.ExecuteLambda.LambdaArgumentsCode) //Click on the Lambda Arguments code + + await page.fill(pageLocators.ExecuteLambda.LambdaArgumentsCode, TezosTestData.ExecuteLambda.LambdaArgumentsCode); //Pass The Lambda Arguments Code + + await page.waitForTimeout(2000); + + await page.click(pageLocators.ExecuteLambda.LambdaParams); + + await page.fill(pageLocators.ExecuteLambda.LambdaParams, TezosTestData.ExecuteLambda.LambdaParams); //Pass The Lambda Params Code + + await page.waitForTimeout(2000); //Wait For Validate + + await page.click(pageLocators.ExecuteLambda.SubmitButton); //Click On the Submit Button + + await page.waitForTimeout(30000); //Wait For Pass The test Data + + const content = await page.content(); //Assume Page + + const isTextVisible = content.includes(pageLocators.ExecuteLambda.TransactionText, { visible: true }); //Verify that text visible on the webpage + + console.log(isTextVisible); //Prints True or false for is Text Visible + + console.log("The proposal is successfully created and the user is redirected to a confirmation page with the details of the newly created proposal."); + + } + catch (error) { + console.log("Now Voting cycle is running"); + } + +}) \ No newline at end of file diff --git a/tests/TC04/TC04-06_ChangeDelegate.spec.js b/tests/TC04/TC04-07_ChangeDelegate.spec.js similarity index 96% rename from tests/TC04/TC04-06_ChangeDelegate.spec.js rename to tests/TC04/TC04-07_ChangeDelegate.spec.js index d8fc73a..618a960 100644 --- a/tests/TC04/TC04-06_ChangeDelegate.spec.js +++ b/tests/TC04/TC04-07_ChangeDelegate.spec.js @@ -3,7 +3,7 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 6: Change Delegate', async ({ page }) => { +test('Test case 7: Change Delegate', async ({ page }) => { await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal diff --git a/tests/TC04/TC04-07_ChangeGuardian.spec.js b/tests/TC04/TC04-08_ChangeGuardian.spec.js similarity index 96% rename from tests/TC04/TC04-07_ChangeGuardian.spec.js rename to tests/TC04/TC04-08_ChangeGuardian.spec.js index dcb8341..873b5c4 100644 --- a/tests/TC04/TC04-07_ChangeGuardian.spec.js +++ b/tests/TC04/TC04-08_ChangeGuardian.spec.js @@ -3,7 +3,7 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -test('Test case 7: Change Guardian', async ({ page }) => { +test('Test case 8: Change Guardian', async ({ page }) => { await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal diff --git a/tests/TC07/TC07-01_ProposalExecution.spec.js b/tests/TC07/TC07-01_ProposalExecution.spec.js new file mode 100644 index 0000000..524bac4 --- /dev/null +++ b/tests/TC07/TC07-01_ProposalExecution.spec.js @@ -0,0 +1,30 @@ +const { test, expect } = require("@playwright/test"); +const { PreProposal } = require("../CommonFile/PreAction"); +const { pageLocators } = require("../CommonFile/Locator"); + +test('Test case 1: On-Chain Proposal Execution', async ({ page }) => { + + test.setTimeout(20 * 60 * 1000); //Extending Test Case timeout to 20 minutes + + await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal + + try { + + await page.click(pageLocators.OffChainPoll.cycle); // Click on Running Cycle Status + + await page.waitForSelector(pageLocators.ProposalExecution.Execute, { click: true }) //Validate That Button is clickable or not + + await page.click(pageLocators.ProposalExecution.Execute); //Click on Execute Button + + const content = await page.content(); //Assume Page + + const isTextVisible = content.includes(pageLocators.ProposalExecution.TransactionText, { visible: true }); //Verify that text visible on the webpage + + console.log(isTextVisible); //Prints True or false for is Text Visible + + } + catch (error) { + console.log("Error: No Passed- Executable Proposals"); + } + +}) \ No newline at end of file diff --git a/tests/TC07/TC07-02_TokenUnStaking.spec.js b/tests/TC07/TC07-02_TokenUnStaking.spec.js new file mode 100644 index 0000000..bd60536 --- /dev/null +++ b/tests/TC07/TC07-02_TokenUnStaking.spec.js @@ -0,0 +1,30 @@ +const { test, expect } = require("@playwright/test"); +const { PreProposal } = require("../CommonFile/PreAction"); +const { pageLocators } = require("../CommonFile/Locator"); + +test('Test case 1: Successful Token UnStaking ', async ({ page }) => { + + test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes + + await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal + + try { + + await page.click(pageLocators.TokenStaking.User); //Click on the User Tab + + await page.click(pageLocators.UnStakingToken.UnStakeVotes); //Click on UnStake Votes + + await page.waitForTimeout(3000); //Wait For Complete The Transaction + + const content = await page.content(); //Assume Page + + const isTextVisible = content.includes(pageLocators.UnStakingToken.TransactionText, { visible: true }); //Verify that text visible on the webpage + + console.log(isTextVisible); + + console.log("The tokens are successfully UnStaked and show up in the Available Balance field.") + + } catch (error) { + console.log("Error: No votes to unstake"); + } +}) \ No newline at end of file From 2a9180086f4618b2cb7e6afef182f6969e9b6e67 Mon Sep 17 00:00:00 2001 From: w3rahul Date: Thu, 14 Sep 2023 11:37:52 +0530 Subject: [PATCH 18/36] WIP: Test Case - Module TC 05 and more --- .github/workflows/Test.yml | 16 +++++++++++++++- package.json | 1 + 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/.github/workflows/Test.yml b/.github/workflows/Test.yml index a7e6f75..e181eeb 100644 --- a/.github/workflows/Test.yml +++ b/.github/workflows/Test.yml @@ -109,4 +109,18 @@ jobs: with: branch: gh-pages folder: playwright-report - target-folder: tests/pr-05/tc-06/ \ No newline at end of file + target-folder: tests/pr-05/tc-06/ + + + - name: TC07 - Run Playwright tests + run: npm run test:tc07 + env: + WEBAPP_URL: ${{ vars.WEBAPP_URL }} + BROWSER: chromium + + - name: TC07 - Deploy Report for TC 07πŸš€ + uses: JamesIves/github-pages-deploy-action@v4 + with: + branch: gh-pages + folder: playwright-report + target-folder: tests/pr-05/tc-07/ \ No newline at end of file diff --git a/package.json b/package.json index 8a97265..41e8650 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "test:tc04": "playwright test tests/TC04", "test:tc05": "playwright test tests/TC05", "test:tc06": "playwright test tests/TC06", + "test:tc07": "playwright test tests/TC07", "dev": "node --inspect-brk ./node_modules/@playwright/test/cli.js test TC04DAOValues.spec.js --project=chromium --headed" }, "keywords": [], From 415777005d5eb3956ba098820e78f2e40134ea37 Mon Sep 17 00:00:00 2001 From: w3rahul Date: Thu, 14 Sep 2023 12:59:37 +0530 Subject: [PATCH 19/36] WIP: Test Case - Module TC 05 and more --- tests/CommonFile/Locator.js | 6 +++--- tests/TC01/TC01-03_CreateDAO.spec.js | 8 ++++++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/tests/CommonFile/Locator.js b/tests/CommonFile/Locator.js index a263725..bb44842 100644 --- a/tests/CommonFile/Locator.js +++ b/tests/CommonFile/Locator.js @@ -63,7 +63,7 @@ const pageLocators = { DAOText: "Go to my DAO", ErrorText: "Required", ConsoleDAOName:"//p[@class='MuiTypography-root jss30 jss31 MuiTypography-body1 MuiTypography-colorTextPrimary']", - + DAOClass:"//p[@class='MuiTypography-root jss30 jss31 MuiTypography-body1 MuiTypography-colorTextPrimary']", }, AcceptDelegation:{ @@ -85,8 +85,8 @@ const pageLocators = { OffChainPoll: { - // DAO: `//p[text()='${DAOName}']`, - DAO:"//p[text()='New1694521222DAO'] ", + DAO: `//p[text()='${DAOName}']`, + // DAO:"//p[text()='New1694521222DAO'] ", Proposal: "//p[text()='Proposals']", cycle: "//p[text()='Creating']", NewProposal: "//span[text()='New Proposal']", diff --git a/tests/TC01/TC01-03_CreateDAO.spec.js b/tests/TC01/TC01-03_CreateDAO.spec.js index ab2b641..77a7e3d 100644 --- a/tests/TC01/TC01-03_CreateDAO.spec.js +++ b/tests/TC01/TC01-03_CreateDAO.spec.js @@ -110,6 +110,14 @@ test('Test Case 3 : Create DAO Successfully', async ({ page }) => { console.log(isTextVisible); //Show the Results of True of false + await page.click(pageLocators.DAOCreate.DAOText); //Click on the my DAO + + const element = await page.$(pageLocators.DAOCreate.DAOClass); // get The element + + const textContent = await element.innerText(); //get the text From this element + + console.log('DAO Name:', textContent); // Console The token Address + console.log("The DAO is successfully created and the user is redirected to a confirmation page that links to the newly created DAO"); }) \ No newline at end of file From e160e4a651aec442ed87723258e3146a665cb566 Mon Sep 17 00:00:00 2001 From: w3rahul Date: Thu, 14 Sep 2023 13:06:11 +0530 Subject: [PATCH 20/36] WIP: Test Case - Module TC 05 and more --- tests/TC01/TC01-03_CreateDAO.spec.js | 8 -------- 1 file changed, 8 deletions(-) diff --git a/tests/TC01/TC01-03_CreateDAO.spec.js b/tests/TC01/TC01-03_CreateDAO.spec.js index 77a7e3d..ab2b641 100644 --- a/tests/TC01/TC01-03_CreateDAO.spec.js +++ b/tests/TC01/TC01-03_CreateDAO.spec.js @@ -110,14 +110,6 @@ test('Test Case 3 : Create DAO Successfully', async ({ page }) => { console.log(isTextVisible); //Show the Results of True of false - await page.click(pageLocators.DAOCreate.DAOText); //Click on the my DAO - - const element = await page.$(pageLocators.DAOCreate.DAOClass); // get The element - - const textContent = await element.innerText(); //get the text From this element - - console.log('DAO Name:', textContent); // Console The token Address - console.log("The DAO is successfully created and the user is redirected to a confirmation page that links to the newly created DAO"); }) \ No newline at end of file From 035e4420fd9d23e151b0a940210353d727b94807 Mon Sep 17 00:00:00 2001 From: w3rahul Date: Thu, 14 Sep 2023 15:13:46 +0530 Subject: [PATCH 21/36] WIP: Test Case - Module TC 05 and more --- tests/CommonFile/Locator.js | 6 +++--- tests/TC04/TC04-06_ExecuteLambda.spec.js | 6 +----- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/tests/CommonFile/Locator.js b/tests/CommonFile/Locator.js index bb44842..6b5bcb9 100644 --- a/tests/CommonFile/Locator.js +++ b/tests/CommonFile/Locator.js @@ -86,7 +86,7 @@ const pageLocators = { OffChainPoll: { DAO: `//p[text()='${DAOName}']`, - // DAO:"//p[text()='New1694521222DAO'] ", + // DAO:"//p[text()='New1694521222DAO'] ", Proposal: "//p[text()='Proposals']", cycle: "//p[text()='Creating']", NewProposal: "//span[text()='New Proposal']", @@ -173,8 +173,8 @@ const pageLocators = { ExecuteLambda: "//p[text()='Execute Lambda']", SearchBox: "#combo-box-demo", Dropdown: "//button[@class='MuiButtonBase-root MuiIconButton-root MuiAutocomplete-popupIndicator']", - LambdaArgumentsCode: ".npm__react-simple-code-editor__textarea:nth-child(2)", - LambdaParams: ".npm__react-simple-code-editor__textarea:nth-child(3)", + LambdaArgumentsCode: "(//textarea[@class='npm__react-simple-code-editor__textarea'])[2]", + LambdaParams: "(//textarea[@class='npm__react-simple-code-editor__textarea'])[3]", SubmitButton: "//span[text()='Submit']", TransactionText: "Execute Lambda proposal transaction confirmed", }, diff --git a/tests/TC04/TC04-06_ExecuteLambda.spec.js b/tests/TC04/TC04-06_ExecuteLambda.spec.js index cb07292..cf4ac69 100644 --- a/tests/TC04/TC04-06_ExecuteLambda.spec.js +++ b/tests/TC04/TC04-06_ExecuteLambda.spec.js @@ -25,18 +25,14 @@ test('Test case 6: Execute Lambda ', async ({ page }) => { await page.keyboard.press('Enter'); //Click on Enter Button - await page.click(pageLocators.ExecuteLambda.LambdaArgumentsCode) //Click on the Lambda Arguments code - await page.fill(pageLocators.ExecuteLambda.LambdaArgumentsCode, TezosTestData.ExecuteLambda.LambdaArgumentsCode); //Pass The Lambda Arguments Code await page.waitForTimeout(2000); - await page.click(pageLocators.ExecuteLambda.LambdaParams); - await page.fill(pageLocators.ExecuteLambda.LambdaParams, TezosTestData.ExecuteLambda.LambdaParams); //Pass The Lambda Params Code await page.waitForTimeout(2000); //Wait For Validate - + await page.click(pageLocators.ExecuteLambda.SubmitButton); //Click On the Submit Button await page.waitForTimeout(30000); //Wait For Pass The test Data From b9d41844367aef10a5eb530cad44769bec5ae080 Mon Sep 17 00:00:00 2001 From: w3rahul Date: Thu, 14 Sep 2023 17:26:55 +0530 Subject: [PATCH 22/36] WIP: Test Case - Module TC 05 and more --- tests/TC07/TC07-01_ProposalExecution.spec.js | 16 ++++++++++++---- tests/TC07/TC07-02_TokenUnStaking.spec.js | 2 +- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/tests/TC07/TC07-01_ProposalExecution.spec.js b/tests/TC07/TC07-01_ProposalExecution.spec.js index 524bac4..b4459fa 100644 --- a/tests/TC07/TC07-01_ProposalExecution.spec.js +++ b/tests/TC07/TC07-01_ProposalExecution.spec.js @@ -2,8 +2,8 @@ const { test, expect } = require("@playwright/test"); const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); -test('Test case 1: On-Chain Proposal Execution', async ({ page }) => { - +test('Test case 1: On-Chain Proposal Execution', async ({ page }) => { + test.setTimeout(20 * 60 * 1000); //Extending Test Case timeout to 20 minutes await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal @@ -12,7 +12,15 @@ test('Test case 1: On-Chain Proposal Execution', async ({ page }) => { await page.click(pageLocators.OffChainPoll.cycle); // Click on Running Cycle Status - await page.waitForSelector(pageLocators.ProposalExecution.Execute, { click: true }) //Validate That Button is clickable or not + const timeout = 300000; // 5 minutes in milliseconds + + try { + await page.waitForSelector(pageLocators.ProposalExecution.Execute, { click: true, timeout }); + + } catch (error) { + + console.error("No Any passed Proposals"); + } await page.click(pageLocators.ProposalExecution.Execute); //Click on Execute Button @@ -21,7 +29,7 @@ test('Test case 1: On-Chain Proposal Execution', async ({ page }) => { const isTextVisible = content.includes(pageLocators.ProposalExecution.TransactionText, { visible: true }); //Verify that text visible on the webpage console.log(isTextVisible); //Prints True or false for is Text Visible - + } catch (error) { console.log("Error: No Passed- Executable Proposals"); diff --git a/tests/TC07/TC07-02_TokenUnStaking.spec.js b/tests/TC07/TC07-02_TokenUnStaking.spec.js index bd60536..4ffe43f 100644 --- a/tests/TC07/TC07-02_TokenUnStaking.spec.js +++ b/tests/TC07/TC07-02_TokenUnStaking.spec.js @@ -2,7 +2,7 @@ const { test, expect } = require("@playwright/test"); const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); -test('Test case 1: Successful Token UnStaking ', async ({ page }) => { +test('Test case 2: Successful Token UnStaking ', async ({ page }) => { test.setTimeout(10 * 60 * 1000); //Extending Test Case timeout to 10 minutes From 44c0e569a60f1ea415eef4a07cdf45f987ab55a9 Mon Sep 17 00:00:00 2001 From: w3rahul Date: Thu, 14 Sep 2023 18:11:29 +0530 Subject: [PATCH 23/36] WIP: Test Case - Module TC 05 and more --- tests/CommonFile/TestData.js | 2 +- tests/TC07/TC07-01_ProposalExecution.spec.js | 8 +------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/tests/CommonFile/TestData.js b/tests/CommonFile/TestData.js index df66671..9e943fc 100644 --- a/tests/CommonFile/TestData.js +++ b/tests/CommonFile/TestData.js @@ -21,7 +21,7 @@ const TezosTestData = { TC04DAODescription: "", VotingDays: '00', VotingHours: '00', - VotingMinutes: "06", + VotingMinutes: "08", ExecutionDays: "00", ExecutionHours: "00", ExecutionMinutes: "01", diff --git a/tests/TC07/TC07-01_ProposalExecution.spec.js b/tests/TC07/TC07-01_ProposalExecution.spec.js index b4459fa..c99d46a 100644 --- a/tests/TC07/TC07-01_ProposalExecution.spec.js +++ b/tests/TC07/TC07-01_ProposalExecution.spec.js @@ -14,13 +14,7 @@ test('Test case 1: On-Chain Proposal Execution', async ({ page }) => { const timeout = 300000; // 5 minutes in milliseconds - try { - await page.waitForSelector(pageLocators.ProposalExecution.Execute, { click: true, timeout }); - - } catch (error) { - - console.error("No Any passed Proposals"); - } + await page.waitForSelector(pageLocators.ProposalExecution.Execute, { click: true, timeout: 300000 }); await page.click(pageLocators.ProposalExecution.Execute); //Click on Execute Button From 35c6ff87043573922cdd76de8b5a5abc3ebb790c Mon Sep 17 00:00:00 2001 From: w3rahul Date: Fri, 15 Sep 2023 12:53:28 +0530 Subject: [PATCH 24/36] WIP: Test Case - Module TC 05 and more --- tests/CommonFile/Locator.js | 1 - tests/TC01/TC01-01_CreateToken.spec.js | 9 ++++----- tests/TC01/TC01-03_CreateDAO.spec.js | 8 +++++--- tests/TC07/TC07-01_ProposalExecution.spec.js | 6 +++--- tokenData.json | 1 + 5 files changed, 13 insertions(+), 12 deletions(-) create mode 100644 tokenData.json diff --git a/tests/CommonFile/Locator.js b/tests/CommonFile/Locator.js index 6b5bcb9..ecd54f2 100644 --- a/tests/CommonFile/Locator.js +++ b/tests/CommonFile/Locator.js @@ -84,7 +84,6 @@ const pageLocators = { }, OffChainPoll: { - DAO: `//p[text()='${DAOName}']`, // DAO:"//p[text()='New1694521222DAO'] ", Proposal: "//p[text()='Proposals']", diff --git a/tests/TC01/TC01-01_CreateToken.spec.js b/tests/TC01/TC01-01_CreateToken.spec.js index 64c641b..569c317 100644 --- a/tests/TC01/TC01-01_CreateToken.spec.js +++ b/tests/TC01/TC01-01_CreateToken.spec.js @@ -2,8 +2,7 @@ const { test } = require("@playwright/test"); const { changeNetwork } = require("../CommonFile/Action"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); - -global.sharedData = {}; // Initialize a global object +const fs = require('fs/promises'); test("Test Case 1: Successful Token Creation", async ({ page }) => { @@ -49,11 +48,11 @@ test("Test Case 1: Successful Token Creation", async ({ page }) => { const element = await page.$(pageLocators.TokenCreator.ConsoleAddress); // get The element - const textContent = await element.innerText(); //get the text From this element + const tokenAddress = await element.innerText(); //Get the text From element - console.log('Token Address:', textContent); // Console The token Address + const tokenData = { tokenAddress }; // Store the token address in an external JSON file - global.sharedData.tokenAddress = textContent; // Share the Token Address with other test cases using global.sharedData + await fs.writeFile('tokenData.json', JSON.stringify(tokenData)); console.log("The token is successfully created and the user is redirected to a confirmation page with the details of the newly created token."); diff --git a/tests/TC01/TC01-03_CreateDAO.spec.js b/tests/TC01/TC01-03_CreateDAO.spec.js index ab2b641..746de52 100644 --- a/tests/TC01/TC01-03_CreateDAO.spec.js +++ b/tests/TC01/TC01-03_CreateDAO.spec.js @@ -1,12 +1,14 @@ -const { test, expect } = require('@playwright/test'); +const { test } = require('@playwright/test'); const { changeNetwork } = require("../CommonFile/Action"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); - +const fs = require('fs/promises'); test('Test Case 3 : Create DAO Successfully', async ({ page }) => { - const tokenAddress = global.sharedData.tokenAddress; // Access the Token Address from the shared global object + const tokenData = JSON.parse(await fs.readFile('tokenData.json')); // Read the token address from the external JSON file + + const tokenAddress = tokenData.tokenAddress; test.setTimeout(5 * 60 * 1000); //Extending Test Case timeout to 5 minutes diff --git a/tests/TC07/TC07-01_ProposalExecution.spec.js b/tests/TC07/TC07-01_ProposalExecution.spec.js index c99d46a..6dcadee 100644 --- a/tests/TC07/TC07-01_ProposalExecution.spec.js +++ b/tests/TC07/TC07-01_ProposalExecution.spec.js @@ -12,12 +12,12 @@ test('Test case 1: On-Chain Proposal Execution', async ({ page }) => { await page.click(pageLocators.OffChainPoll.cycle); // Click on Running Cycle Status - const timeout = 300000; // 5 minutes in milliseconds - - await page.waitForSelector(pageLocators.ProposalExecution.Execute, { click: true, timeout: 300000 }); + await page.waitForSelector(pageLocators.ProposalExecution.Execute, { click: true, timeout: 600000 }); await page.click(pageLocators.ProposalExecution.Execute); //Click on Execute Button + await page.waitForTimeout(30000); //Wait for transaction + const content = await page.content(); //Assume Page const isTextVisible = content.includes(pageLocators.ProposalExecution.TransactionText, { visible: true }); //Verify that text visible on the webpage diff --git a/tokenData.json b/tokenData.json new file mode 100644 index 0000000..d2a2d82 --- /dev/null +++ b/tokenData.json @@ -0,0 +1 @@ +{"tokenAddress":"KT1WwZYpgfNwxyKwb3LBCizDHGDWFQoCZe8o"} \ No newline at end of file From 27f00904942ad7dcce799d0b1ebf39650c3cfc2c Mon Sep 17 00:00:00 2001 From: w3rahul Date: Fri, 15 Sep 2023 13:49:27 +0530 Subject: [PATCH 25/36] WIP: Test Case - Module TC 05 and more --- tests/CommonFile/Locator.js | 1 - tests/CommonFile/sharedValues.js | 10 ++++++++++ tests/TC01/TC01-01_CreateToken.spec.js | 10 +++++----- tests/TC01/TC01-03_CreateDAO.spec.js | 8 +++----- tokenData.json | 1 - 5 files changed, 18 insertions(+), 12 deletions(-) create mode 100644 tests/CommonFile/sharedValues.js delete mode 100644 tokenData.json diff --git a/tests/CommonFile/Locator.js b/tests/CommonFile/Locator.js index ecd54f2..449d94e 100644 --- a/tests/CommonFile/Locator.js +++ b/tests/CommonFile/Locator.js @@ -85,7 +85,6 @@ const pageLocators = { OffChainPoll: { DAO: `//p[text()='${DAOName}']`, - // DAO:"//p[text()='New1694521222DAO'] ", Proposal: "//p[text()='Proposals']", cycle: "//p[text()='Creating']", NewProposal: "//span[text()='New Proposal']", diff --git a/tests/CommonFile/sharedValues.js b/tests/CommonFile/sharedValues.js new file mode 100644 index 0000000..6481baa --- /dev/null +++ b/tests/CommonFile/sharedValues.js @@ -0,0 +1,10 @@ +let TokenAddress; + +module.exports = { + setTokenAddress: (address) => { + TokenAddress = address; + }, + getTokenAddress: () => { + return TokenAddress; + }, +}; diff --git a/tests/TC01/TC01-01_CreateToken.spec.js b/tests/TC01/TC01-01_CreateToken.spec.js index 569c317..6b1f571 100644 --- a/tests/TC01/TC01-01_CreateToken.spec.js +++ b/tests/TC01/TC01-01_CreateToken.spec.js @@ -2,7 +2,8 @@ const { test } = require("@playwright/test"); const { changeNetwork } = require("../CommonFile/Action"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -const fs = require('fs/promises'); +const { setTokenAddress } = require("../CommonFile/sharedValues"); // Import the function to set TokenAddress + test("Test Case 1: Successful Token Creation", async ({ page }) => { @@ -48,13 +49,12 @@ test("Test Case 1: Successful Token Creation", async ({ page }) => { const element = await page.$(pageLocators.TokenCreator.ConsoleAddress); // get The element - const tokenAddress = await element.innerText(); //Get the text From element + const TokenAddress = await element.innerText(); //get the text From this element - const tokenData = { tokenAddress }; // Store the token address in an external JSON file + console.log('Token Address:', TokenAddress); // Console The token Address - await fs.writeFile('tokenData.json', JSON.stringify(tokenData)); + setTokenAddress(TokenAddress); // Set the TokenAddress value console.log("The token is successfully created and the user is redirected to a confirmation page with the details of the newly created token."); }); - diff --git a/tests/TC01/TC01-03_CreateDAO.spec.js b/tests/TC01/TC01-03_CreateDAO.spec.js index 746de52..1104ba1 100644 --- a/tests/TC01/TC01-03_CreateDAO.spec.js +++ b/tests/TC01/TC01-03_CreateDAO.spec.js @@ -2,13 +2,11 @@ const { test } = require('@playwright/test'); const { changeNetwork } = require("../CommonFile/Action"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -const fs = require('fs/promises'); +const { getTokenAddress } = require("../CommonFile/sharedValues"); test('Test Case 3 : Create DAO Successfully', async ({ page }) => { - const tokenData = JSON.parse(await fs.readFile('tokenData.json')); // Read the token address from the external JSON file - - const tokenAddress = tokenData.tokenAddress; + const tokenAddress = getTokenAddress(); // Retrieve the TokenAddress value when needed test.setTimeout(5 * 60 * 1000); //Extending Test Case timeout to 5 minutes @@ -24,7 +22,7 @@ test('Test Case 3 : Create DAO Successfully', async ({ page }) => { await page.fill(pageLocators.DAOCreate.DAOName, TezosTestData.DAOCreate.DAOName); //Fill DAO Name - await page.fill(pageLocators.DAOCreate.TokenAddress, tokenAddress); //Fill Token Address + await page.fill(pageLocators.DAOCreate.TokenAddress,tokenAddress); //Fill Token Address await page.fill(pageLocators.DAOCreate.TokenID, TezosTestData.DAOCreate.TokenID); //Fill Token ID diff --git a/tokenData.json b/tokenData.json deleted file mode 100644 index d2a2d82..0000000 --- a/tokenData.json +++ /dev/null @@ -1 +0,0 @@ -{"tokenAddress":"KT1WwZYpgfNwxyKwb3LBCizDHGDWFQoCZe8o"} \ No newline at end of file From f468035842cf7261ba83ddd643829e2865f56310 Mon Sep 17 00:00:00 2001 From: w3rahul Date: Fri, 15 Sep 2023 16:26:54 +0530 Subject: [PATCH 26/36] WIP: Test Case - Module TC 05 and more --- tests/CommonFile/Locator.js | 3 ++- tests/CommonFile/TestData.js | 7 ++++--- tests/CommonFile/sharedValues.js | 4 +++- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/tests/CommonFile/Locator.js b/tests/CommonFile/Locator.js index 449d94e..88697b5 100644 --- a/tests/CommonFile/Locator.js +++ b/tests/CommonFile/Locator.js @@ -1,4 +1,5 @@ -import { DAOName } from './TestData'; +const { DAOName } = require("./sharedValues"); + const pageLocators = { TokenCreator: { diff --git a/tests/CommonFile/TestData.js b/tests/CommonFile/TestData.js index 9e943fc..1aec123 100644 --- a/tests/CommonFile/TestData.js +++ b/tests/CommonFile/TestData.js @@ -1,3 +1,5 @@ +const { DAOName } = require("./sharedValues"); + const TezosTestData = { TokenCreator: { @@ -13,7 +15,7 @@ const TezosTestData = { }, DAOCreate: { - DAOName: `New${Math.floor(+new Date() / 1000)}DAO`, + DAOName, TokenID: "0", TokenAddress: "KT1VPiQUCrYSzicaNa5yWhndt7K19HYUCGzP", GuardianAddress: "tz1LCFwczMiEuNHcMvpqgNzzEs8f4FNBgyNK", @@ -100,6 +102,5 @@ const TezosTestData = { Amount: "50", }, } -const DAOName = TezosTestData.DAOCreate.DAOName; -export { TezosTestData, DAOName }; \ No newline at end of file +export { TezosTestData }; \ No newline at end of file diff --git a/tests/CommonFile/sharedValues.js b/tests/CommonFile/sharedValues.js index 6481baa..8164987 100644 --- a/tests/CommonFile/sharedValues.js +++ b/tests/CommonFile/sharedValues.js @@ -1,4 +1,5 @@ let TokenAddress; +const DAOName = `New${Math.floor(+new Date() / 1000)}DAO`; module.exports = { setTokenAddress: (address) => { @@ -7,4 +8,5 @@ module.exports = { getTokenAddress: () => { return TokenAddress; }, -}; + DAOName, +}; \ No newline at end of file From 19d904b69d923ec37dcd55a8df3e4047d7e66e96 Mon Sep 17 00:00:00 2001 From: w3rahul Date: Sat, 16 Sep 2023 12:10:30 +0530 Subject: [PATCH 27/36] WIP: Test Case - Module TC 05 and more --- tests/CommonFile/TestData.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/CommonFile/TestData.js b/tests/CommonFile/TestData.js index 1aec123..ecd0075 100644 --- a/tests/CommonFile/TestData.js +++ b/tests/CommonFile/TestData.js @@ -23,7 +23,7 @@ const TezosTestData = { TC04DAODescription: "", VotingDays: '00', VotingHours: '00', - VotingMinutes: "08", + VotingMinutes: "07", ExecutionDays: "00", ExecutionHours: "00", ExecutionMinutes: "01", From 6c49b16d152d606319e0aee4103afa000d9a1a95 Mon Sep 17 00:00:00 2001 From: w3rahul Date: Sat, 16 Sep 2023 12:57:10 +0530 Subject: [PATCH 28/36] WIP: Test Case - Module TC 05 and more --- tests/CommonFile/Locator.js | 2 +- tests/CommonFile/TestData.js | 7 +++---- tests/CommonFile/sharedValues.js | 2 -- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/tests/CommonFile/Locator.js b/tests/CommonFile/Locator.js index 88697b5..78da125 100644 --- a/tests/CommonFile/Locator.js +++ b/tests/CommonFile/Locator.js @@ -1,4 +1,4 @@ -const { DAOName } = require("./sharedValues"); +import { DAOName } from "./TestData"; const pageLocators = { diff --git a/tests/CommonFile/TestData.js b/tests/CommonFile/TestData.js index ecd0075..e75c863 100644 --- a/tests/CommonFile/TestData.js +++ b/tests/CommonFile/TestData.js @@ -1,5 +1,3 @@ -const { DAOName } = require("./sharedValues"); - const TezosTestData = { TokenCreator: { @@ -15,7 +13,7 @@ const TezosTestData = { }, DAOCreate: { - DAOName, + DAOName:`New${Math.floor(+new Date() / 1000)}DAO`, TokenID: "0", TokenAddress: "KT1VPiQUCrYSzicaNa5yWhndt7K19HYUCGzP", GuardianAddress: "tz1LCFwczMiEuNHcMvpqgNzzEs8f4FNBgyNK", @@ -102,5 +100,6 @@ const TezosTestData = { Amount: "50", }, } +const DAOName = TezosTestData.DAOCreate.DAOName; -export { TezosTestData }; \ No newline at end of file +export { TezosTestData , DAOName}; \ No newline at end of file diff --git a/tests/CommonFile/sharedValues.js b/tests/CommonFile/sharedValues.js index 8164987..48c03df 100644 --- a/tests/CommonFile/sharedValues.js +++ b/tests/CommonFile/sharedValues.js @@ -1,5 +1,4 @@ let TokenAddress; -const DAOName = `New${Math.floor(+new Date() / 1000)}DAO`; module.exports = { setTokenAddress: (address) => { @@ -8,5 +7,4 @@ module.exports = { getTokenAddress: () => { return TokenAddress; }, - DAOName, }; \ No newline at end of file From 7521769ca4ddaee2eb632a0b836f1796a24431c9 Mon Sep 17 00:00:00 2001 From: w3rahul Date: Sat, 16 Sep 2023 13:27:24 +0530 Subject: [PATCH 29/36] WIP: Test Case - Module TC 05 and more --- tests/CommonFile/Locator.js | 4 ++-- tests/CommonFile/TestData.js | 10 +++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/tests/CommonFile/Locator.js b/tests/CommonFile/Locator.js index 78da125..c4a30a0 100644 --- a/tests/CommonFile/Locator.js +++ b/tests/CommonFile/Locator.js @@ -1,4 +1,4 @@ -import { DAOName } from "./TestData"; +import { generateDAOName } from "./TestData"; const pageLocators = { @@ -85,7 +85,7 @@ const pageLocators = { }, OffChainPoll: { - DAO: `//p[text()='${DAOName}']`, + DAO: `//p[text()='${generateDAOName()}']`, Proposal: "//p[text()='Proposals']", cycle: "//p[text()='Creating']", NewProposal: "//span[text()='New Proposal']", diff --git a/tests/CommonFile/TestData.js b/tests/CommonFile/TestData.js index e75c863..802da92 100644 --- a/tests/CommonFile/TestData.js +++ b/tests/CommonFile/TestData.js @@ -1,3 +1,7 @@ +const generateDAOName = () => { + return `New${Math.floor(+new Date() / 1000)}DAO`; + }; + const TezosTestData = { TokenCreator: { @@ -13,7 +17,7 @@ const TezosTestData = { }, DAOCreate: { - DAOName:`New${Math.floor(+new Date() / 1000)}DAO`, + DAOName: generateDAOName(), TokenID: "0", TokenAddress: "KT1VPiQUCrYSzicaNa5yWhndt7K19HYUCGzP", GuardianAddress: "tz1LCFwczMiEuNHcMvpqgNzzEs8f4FNBgyNK", @@ -100,6 +104,6 @@ const TezosTestData = { Amount: "50", }, } -const DAOName = TezosTestData.DAOCreate.DAOName; +const DAOName = generateDAOName(); -export { TezosTestData , DAOName}; \ No newline at end of file +export { TezosTestData , DAOName, generateDAOName}; \ No newline at end of file From 05d0dc410068b65482c6128f1d64cae54b0943d0 Mon Sep 17 00:00:00 2001 From: w3rahul Date: Sat, 16 Sep 2023 14:02:00 +0530 Subject: [PATCH 30/36] WIP: Test Case - Module TC 05 and more --- tests/CommonFile/Locator.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/CommonFile/Locator.js b/tests/CommonFile/Locator.js index c4a30a0..027a28b 100644 --- a/tests/CommonFile/Locator.js +++ b/tests/CommonFile/Locator.js @@ -85,7 +85,8 @@ const pageLocators = { }, OffChainPoll: { - DAO: `//p[text()='${generateDAOName()}']`, + // DAO: `//p[text()='${generateDAOName()}']`, + DAO: "//p[text()='Blue Black']", Proposal: "//p[text()='Proposals']", cycle: "//p[text()='Creating']", NewProposal: "//span[text()='New Proposal']", From 50e509dc7f52118ed1551f89dc0f2bef6fa9e42d Mon Sep 17 00:00:00 2001 From: w3rahul Date: Sat, 16 Sep 2023 17:18:01 +0530 Subject: [PATCH 31/36] WIP: Test Case - Module TC 05 and more --- .github/workflows/Test.yml | 85 +------------------------- tests/CommonFile/Locator.js | 3 +- tests/CommonFile/TestData.js | 4 +- tests/TC01/TC01-01_CreateToken.spec.js | 2 +- 4 files changed, 7 insertions(+), 87 deletions(-) diff --git a/.github/workflows/Test.yml b/.github/workflows/Test.yml index e181eeb..7c9131f 100644 --- a/.github/workflows/Test.yml +++ b/.github/workflows/Test.yml @@ -34,93 +34,14 @@ jobs: run: npx playwright install --with-deps - name: TC01 - Run Playwright tests - run: npm run test:tc01 + run: npm run test:test env: WEBAPP_URL: ${{ vars.WEBAPP_URL }} BROWSER: chromium - - name: TC01 - Deploy Report for TC 01πŸš€ + - name: Deploy Report for ALL TestsπŸš€ uses: JamesIves/github-pages-deploy-action@v4 with: branch: gh-pages folder: playwright-report - target-folder: tests/pr-05/tc-01/ - - - name: TC02 - Run Playwright tests - run: npm run test:tc02 - env: - WEBAPP_URL: ${{ vars.WEBAPP_URL }} - BROWSER: chromium - - - name: TC02 - Deploy Report for TC 02πŸš€ - uses: JamesIves/github-pages-deploy-action@v4 - with: - branch: gh-pages - folder: playwright-report - target-folder: tests/pr-05/tc-02/ - - - name: TC03 - Run Playwright tests - run: npm run test:tc03 - env: - WEBAPP_URL: ${{ vars.WEBAPP_URL }} - BROWSER: chromium - - - name: TC03 - Deploy Report for TC 03πŸš€ - uses: JamesIves/github-pages-deploy-action@v4 - with: - branch: gh-pages - folder: playwright-report - target-folder: tests/pr-05/tc-03/ - - - name: TC04 - Run Playwright tests - run: npm run test:tc04 - env: - WEBAPP_URL: ${{ vars.WEBAPP_URL }} - BROWSER: chromium - - - name: TC04 - Deploy Report for TC 04πŸš€ - uses: JamesIves/github-pages-deploy-action@v4 - with: - branch: gh-pages - folder: playwright-report - target-folder: tests/pr-05/tc-04/ - - - name: TC05 - Run Playwright tests - run: npm run test:tc05 - env: - WEBAPP_URL: ${{ vars.WEBAPP_URL }} - BROWSER: chromium - - - name: TC05 - Deploy Report for TC 05πŸš€ - uses: JamesIves/github-pages-deploy-action@v4 - with: - branch: gh-pages - folder: playwright-report - target-folder: tests/pr-05/tc-05/ - - - name: TC06 - Run Playwright tests - run: npm run test:tc06 - env: - WEBAPP_URL: ${{ vars.WEBAPP_URL }} - BROWSER: chromium - - - name: TC06 - Deploy Report for TC 06πŸš€ - uses: JamesIves/github-pages-deploy-action@v4 - with: - branch: gh-pages - folder: playwright-report - target-folder: tests/pr-05/tc-06/ - - - - name: TC07 - Run Playwright tests - run: npm run test:tc07 - env: - WEBAPP_URL: ${{ vars.WEBAPP_URL }} - BROWSER: chromium - - - name: TC07 - Deploy Report for TC 07πŸš€ - uses: JamesIves/github-pages-deploy-action@v4 - with: - branch: gh-pages - folder: playwright-report - target-folder: tests/pr-05/tc-07/ \ No newline at end of file + target-folder: tests/pr-05/ \ No newline at end of file diff --git a/tests/CommonFile/Locator.js b/tests/CommonFile/Locator.js index 027a28b..c4a30a0 100644 --- a/tests/CommonFile/Locator.js +++ b/tests/CommonFile/Locator.js @@ -85,8 +85,7 @@ const pageLocators = { }, OffChainPoll: { - // DAO: `//p[text()='${generateDAOName()}']`, - DAO: "//p[text()='Blue Black']", + DAO: `//p[text()='${generateDAOName()}']`, Proposal: "//p[text()='Proposals']", cycle: "//p[text()='Creating']", NewProposal: "//span[text()='New Proposal']", diff --git a/tests/CommonFile/TestData.js b/tests/CommonFile/TestData.js index 802da92..a0cafb2 100644 --- a/tests/CommonFile/TestData.js +++ b/tests/CommonFile/TestData.js @@ -1,6 +1,6 @@ const generateDAOName = () => { - return `New${Math.floor(+new Date() / 1000)}DAO`; - }; + return `New${Math.floor(+new Date() / 1000)}DAO`; +}; const TezosTestData = { diff --git a/tests/TC01/TC01-01_CreateToken.spec.js b/tests/TC01/TC01-01_CreateToken.spec.js index 6b1f571..f8b6eb1 100644 --- a/tests/TC01/TC01-01_CreateToken.spec.js +++ b/tests/TC01/TC01-01_CreateToken.spec.js @@ -2,7 +2,7 @@ const { test } = require("@playwright/test"); const { changeNetwork } = require("../CommonFile/Action"); const { pageLocators } = require("../CommonFile/Locator"); const { TezosTestData } = require("../CommonFile/TestData"); -const { setTokenAddress } = require("../CommonFile/sharedValues"); // Import the function to set TokenAddress +const { setTokenAddress } = require("../CommonFile/sharedValues"); test("Test Case 1: Successful Token Creation", async ({ page }) => { From ece0a5966e122a0c9602e389647c433fb3757d38 Mon Sep 17 00:00:00 2001 From: w3rahul Date: Sat, 16 Sep 2023 17:23:51 +0530 Subject: [PATCH 32/36] WIP: Test Case - Module TC 05 and more --- .github/workflows/Test.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/Test.yml b/.github/workflows/Test.yml index 7c9131f..d969789 100644 --- a/.github/workflows/Test.yml +++ b/.github/workflows/Test.yml @@ -33,13 +33,13 @@ jobs: - name: Install Playwright Browsers run: npx playwright install --with-deps - - name: TC01 - Run Playwright tests - run: npm run test:test + - name: Run Playwright tests + run: npm run test env: WEBAPP_URL: ${{ vars.WEBAPP_URL }} BROWSER: chromium - - name: Deploy Report for ALL TestsπŸš€ + - name: Deploy ReportsπŸš€ uses: JamesIves/github-pages-deploy-action@v4 with: branch: gh-pages From 6578fc4bbed484a95048acfb0560617a49352b80 Mon Sep 17 00:00:00 2001 From: w3rahul Date: Sat, 16 Sep 2023 19:51:55 +0530 Subject: [PATCH 33/36] WIP: Test Case - Module TC 05 and more --- tests/TC07/TC07-01_ProposalExecution.spec.js | 41 +++++++++++++------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/tests/TC07/TC07-01_ProposalExecution.spec.js b/tests/TC07/TC07-01_ProposalExecution.spec.js index 6dcadee..71f7171 100644 --- a/tests/TC07/TC07-01_ProposalExecution.spec.js +++ b/tests/TC07/TC07-01_ProposalExecution.spec.js @@ -3,30 +3,41 @@ const { PreProposal } = require("../CommonFile/PreAction"); const { pageLocators } = require("../CommonFile/Locator"); test('Test case 1: On-Chain Proposal Execution', async ({ page }) => { + test.setTimeout(10 * 60 * 1000); // Extending Test Case timeout to 10 minutes - test.setTimeout(20 * 60 * 1000); //Extending Test Case timeout to 20 minutes - - await PreProposal(page); //PreConditions Open URL and Open Mask DAO For Proposal + await PreProposal(page); // PreConditions Open URL and Open Mask DAO For Proposal try { + await page.click(pageLocators.OffChainPoll.cycle); // Click on Running Cycle Status - await page.click(pageLocators.OffChainPoll.cycle); // Click on Running Cycle Status - - await page.waitForSelector(pageLocators.ProposalExecution.Execute, { click: true, timeout: 600000 }); + let elementFound = false; + let retries = 0; + const maxRetries = 3; // Set the maximum number of retries as needed - await page.click(pageLocators.ProposalExecution.Execute); //Click on Execute Button + while (!elementFound && retries < maxRetries) { + try { + await page.waitForSelector(pageLocators.ProposalExecution.Execute, { timeout: 300000 }); + await page.click(pageLocators.ProposalExecution.Execute); // Click on Execute Button + elementFound = true; // Element found and clicked successfully + } catch (error) { - await page.waitForTimeout(30000); //Wait for transaction + console.log(`Retry ${retries + 1}: Element not found or not clickable`); // Handle the error or log it + retries++; + } + } - const content = await page.content(); //Assume Page + if (elementFound) { + await page.waitForTimeout(30000); // Wait for transaction - const isTextVisible = content.includes(pageLocators.ProposalExecution.TransactionText, { visible: true }); //Verify that text visible on the webpage + const content = await page.content(); // Assume Page - console.log(isTextVisible); //Prints True or false for is Text Visible + const isTextVisible = content.includes(pageLocators.ProposalExecution.TransactionText, { visible: true }); // Verify that text is visible on the webpage - } - catch (error) { + console.log(isTextVisible); // Prints True or false for whether the text is visible + } else { + console.log(`Error: Element not found or not clickable after ${maxRetries} retries`); + } + } catch (error) { console.log("Error: No Passed- Executable Proposals"); } - -}) \ No newline at end of file +}); From 4350440a1d78f18ebaf66d699c416dbdd6c5209a Mon Sep 17 00:00:00 2001 From: w3rahul Date: Mon, 18 Sep 2023 11:56:22 +0530 Subject: [PATCH 34/36] WIP: Test Case - Module TC 07 and more --- .github/workflows/Test.yml | 94 +++++++++++++++++++++++++++++++--- tests/CommonFile/CommonData.js | 17 ++++++ tests/CommonFile/Locator.js | 2 +- tests/CommonFile/TestData.js | 7 +-- 4 files changed, 106 insertions(+), 14 deletions(-) create mode 100644 tests/CommonFile/CommonData.js diff --git a/.github/workflows/Test.yml b/.github/workflows/Test.yml index d969789..ce7f7a1 100644 --- a/.github/workflows/Test.yml +++ b/.github/workflows/Test.yml @@ -19,29 +19,107 @@ jobs: runs-on: ubuntu-latest steps: - - name: Checkout code + - name: Checkout code πŸ›ŽοΈ uses: actions/checkout@v3 - - name: Install Node.js + - name: Install Node.js πŸ“š uses: actions/setup-node@v3 with: node-version: 18 - - name: Install dependencies + - name: Install dependencies πŸ“š run: npm ci - - name: Install Playwright Browsers + - name: Install Playwright Browsers πŸ“š run: npx playwright install --with-deps - - name: Run Playwright tests - run: npm run test + - name: TC01 - Run Playwright tests + run: npm run test:tc01 env: WEBAPP_URL: ${{ vars.WEBAPP_URL }} BROWSER: chromium - - name: Deploy ReportsπŸš€ + - name: TC01 - Deploy Report for TC 01πŸš€ uses: JamesIves/github-pages-deploy-action@v4 with: branch: gh-pages folder: playwright-report - target-folder: tests/pr-05/ \ No newline at end of file + target-folder: tests/pr-05/tc-01/ + + - name: TC02 - Run Playwright tests + run: npm run test:tc02 + env: + WEBAPP_URL: ${{ vars.WEBAPP_URL }} + BROWSER: chromium + + - name: TC02 - Deploy Report for TC 02πŸš€ + uses: JamesIves/github-pages-deploy-action@v4 + with: + branch: gh-pages + folder: playwright-report + target-folder: tests/pr-05/tc-02/ + + - name: TC03 - Run Playwright tests + run: npm run test:tc03 + env: + WEBAPP_URL: ${{ vars.WEBAPP_URL }} + BROWSER: chromium + + - name: TC03 - Deploy Report for TC 03πŸš€ + uses: JamesIves/github-pages-deploy-action@v4 + with: + branch: gh-pages + folder: playwright-report + target-folder: tests/pr-05/tc-03/ + + - name: TC04 - Run Playwright tests + run: npm run test:tc04 + env: + WEBAPP_URL: ${{ vars.WEBAPP_URL }} + BROWSER: chromium + + - name: TC04 - Deploy Report for TC 04πŸš€ + uses: JamesIves/github-pages-deploy-action@v4 + with: + branch: gh-pages + folder: playwright-report + target-folder: tests/pr-05/tc-04/ + + - name: TC05 - Run Playwright tests + run: npm run test:tc05 + env: + WEBAPP_URL: ${{ vars.WEBAPP_URL }} + BROWSER: chromium + + - name: TC05 - Deploy Report for TC 05πŸš€ + uses: JamesIves/github-pages-deploy-action@v4 + with: + branch: gh-pages + folder: playwright-report + target-folder: tests/pr-05/tc-05/ + + - name: TC06 - Run Playwright tests + run: npm run test:tc06 + env: + WEBAPP_URL: ${{ vars.WEBAPP_URL }} + BROWSER: chromium + + - name: TC06 - Deploy Report for TC 06πŸš€ + uses: JamesIves/github-pages-deploy-action@v4 + with: + branch: gh-pages + folder: playwright-report + target-folder: tests/pr-05/tc-06/ + + - name: TC07 - Run Playwright tests + run: npm run test:tc07 + env: + WEBAPP_URL: ${{ vars.WEBAPP_URL }} + BROWSER: chromium + + - name: TC07 - Deploy Report for TC 07πŸš€ + uses: JamesIves/github-pages-deploy-action@v4 + with: + branch: gh-pages + folder: playwright-report + target-folder: tests/pr-05/tc-07/ \ No newline at end of file diff --git a/tests/CommonFile/CommonData.js b/tests/CommonFile/CommonData.js new file mode 100644 index 0000000..5ba2d4d --- /dev/null +++ b/tests/CommonFile/CommonData.js @@ -0,0 +1,17 @@ +let cachedDAOName = null; +let lastGeneratedTime = null; +const daoNameCacheDuration = 20 * 60 * 1000; // 20 minutes in milliseconds + +const generateDAOName = () => { + const currentTime = +new Date(); + + // Check if the DAOName is not cached or if it's been cached for more than 20 minutes + if (!cachedDAOName || (currentTime - lastGeneratedTime) > daoNameCacheDuration) { + cachedDAOName = `New${Math.floor(currentTime / 1000)}DAO`; + lastGeneratedTime = currentTime; + } + + return cachedDAOName; +}; + +export { generateDAOName }; diff --git a/tests/CommonFile/Locator.js b/tests/CommonFile/Locator.js index c4a30a0..a7cd50c 100644 --- a/tests/CommonFile/Locator.js +++ b/tests/CommonFile/Locator.js @@ -1,4 +1,4 @@ -import { generateDAOName } from "./TestData"; +import { generateDAOName } from "./CommonData"; const pageLocators = { diff --git a/tests/CommonFile/TestData.js b/tests/CommonFile/TestData.js index a0cafb2..99fcce5 100644 --- a/tests/CommonFile/TestData.js +++ b/tests/CommonFile/TestData.js @@ -1,6 +1,4 @@ -const generateDAOName = () => { - return `New${Math.floor(+new Date() / 1000)}DAO`; -}; +import { generateDAOName } from "./CommonData"; const TezosTestData = { @@ -104,6 +102,5 @@ const TezosTestData = { Amount: "50", }, } -const DAOName = generateDAOName(); -export { TezosTestData , DAOName, generateDAOName}; \ No newline at end of file +export { TezosTestData }; \ No newline at end of file From 1eda749942557912d41af6e69aa8c2ffbcd31ad1 Mon Sep 17 00:00:00 2001 From: w3rahul Date: Mon, 18 Sep 2023 16:00:10 +0530 Subject: [PATCH 35/36] WIP: Test Case - Module TC 07 and more --- tests/CommonFile/CommonData.js | 17 ----------------- tests/CommonFile/Locator.js | 5 +---- tests/CommonFile/PreAction.js | 18 ++++++++++++------ tests/CommonFile/TestData.js | 5 +---- 4 files changed, 14 insertions(+), 31 deletions(-) delete mode 100644 tests/CommonFile/CommonData.js diff --git a/tests/CommonFile/CommonData.js b/tests/CommonFile/CommonData.js deleted file mode 100644 index 5ba2d4d..0000000 --- a/tests/CommonFile/CommonData.js +++ /dev/null @@ -1,17 +0,0 @@ -let cachedDAOName = null; -let lastGeneratedTime = null; -const daoNameCacheDuration = 20 * 60 * 1000; // 20 minutes in milliseconds - -const generateDAOName = () => { - const currentTime = +new Date(); - - // Check if the DAOName is not cached or if it's been cached for more than 20 minutes - if (!cachedDAOName || (currentTime - lastGeneratedTime) > daoNameCacheDuration) { - cachedDAOName = `New${Math.floor(currentTime / 1000)}DAO`; - lastGeneratedTime = currentTime; - } - - return cachedDAOName; -}; - -export { generateDAOName }; diff --git a/tests/CommonFile/Locator.js b/tests/CommonFile/Locator.js index a7cd50c..29ddf1f 100644 --- a/tests/CommonFile/Locator.js +++ b/tests/CommonFile/Locator.js @@ -1,7 +1,4 @@ -import { generateDAOName } from "./CommonData"; - const pageLocators = { - TokenCreator: { MainNet: "//p[text()='Mainnet']", GhostNet: "//h6[text()='Ghostnet']", @@ -85,7 +82,7 @@ const pageLocators = { }, OffChainPoll: { - DAO: `//p[text()='${generateDAOName()}']`, + DAO: `//p[text()='']`, Proposal: "//p[text()='Proposals']", cycle: "//p[text()='Creating']", NewProposal: "//span[text()='New Proposal']", diff --git a/tests/CommonFile/PreAction.js b/tests/CommonFile/PreAction.js index 3deb2d3..3faa878 100644 --- a/tests/CommonFile/PreAction.js +++ b/tests/CommonFile/PreAction.js @@ -1,20 +1,26 @@ const { test } = require("@playwright/test"); -const { pageLocators } = require ("./Locator"); +const { pageLocators } = require("./Locator"); const { changeNetwork } = require("./Action"); -async function PreProposal(page){ +async function PreProposal(page) { test.setTimeout(5 * 60 * 1000); //Extending Test Case timeout to 5 minutes - + await changeNetwork(page); //PreConditions Open URL and Selecting the Ghost-net - await page.click(pageLocators.OffChainPoll.DAO); //Click on Mask DAO + const DAOName = await page.evaluate(() => { // Retrieve DAOName from Local Storage + return localStorage.getItem('DAOName'); + }); + + const daoElement = await page.locator(pageLocators.OffChainPoll.DAO.replace('${DAOName}', DAOName)).first(); // Use DAOName to locate elements on the page + + await daoElement.click(); // Perform actions with the located element await page.click(pageLocators.OffChainPoll.Proposal); //Click on Proposal - + } -module.exports= { +module.exports = { PreProposal } \ No newline at end of file diff --git a/tests/CommonFile/TestData.js b/tests/CommonFile/TestData.js index 99fcce5..0f82675 100644 --- a/tests/CommonFile/TestData.js +++ b/tests/CommonFile/TestData.js @@ -1,5 +1,3 @@ -import { generateDAOName } from "./CommonData"; - const TezosTestData = { TokenCreator: { @@ -15,7 +13,7 @@ const TezosTestData = { }, DAOCreate: { - DAOName: generateDAOName(), + DAOName: `New${Math.floor(+new Date() / 1000)}DAO`, TokenID: "0", TokenAddress: "KT1VPiQUCrYSzicaNa5yWhndt7K19HYUCGzP", GuardianAddress: "tz1LCFwczMiEuNHcMvpqgNzzEs8f4FNBgyNK", @@ -102,5 +100,4 @@ const TezosTestData = { Amount: "50", }, } - export { TezosTestData }; \ No newline at end of file From bca9df335f697b6ac562e27b6c9ddde6c4018727 Mon Sep 17 00:00:00 2001 From: w3rahul Date: Thu, 21 Sep 2023 17:13:05 +0530 Subject: [PATCH 36/36] WIP: Test Case - Module TC 07 and more --- tests/CommonFile/Locator.js | 4 +++- tests/CommonFile/PreAction.js | 8 +------- tests/CommonFile/TestData.js | 5 ++++- tests/{TC06 => TC06-01}/TC06-01_TokenWithdrawal.spec.js | 0 tests/{TC06 => TC06-01}/TC06-02_TokenStaking.spec.js | 0 .../TC06-01_ProposalExecution.spec.js} | 0 .../TC06-02_TokenUnStaking.spec.js} | 0 7 files changed, 8 insertions(+), 9 deletions(-) rename tests/{TC06 => TC06-01}/TC06-01_TokenWithdrawal.spec.js (100%) rename tests/{TC06 => TC06-01}/TC06-02_TokenStaking.spec.js (100%) rename tests/{TC07/TC07-01_ProposalExecution.spec.js => TC06-02/TC06-01_ProposalExecution.spec.js} (100%) rename tests/{TC07/TC07-02_TokenUnStaking.spec.js => TC06-02/TC06-02_TokenUnStaking.spec.js} (100%) diff --git a/tests/CommonFile/Locator.js b/tests/CommonFile/Locator.js index 29ddf1f..b25dd8f 100644 --- a/tests/CommonFile/Locator.js +++ b/tests/CommonFile/Locator.js @@ -1,3 +1,5 @@ +import { DAONam } from "./TestData"; + const pageLocators = { TokenCreator: { MainNet: "//p[text()='Mainnet']", @@ -82,7 +84,7 @@ const pageLocators = { }, OffChainPoll: { - DAO: `//p[text()='']`, + DAO: `//p[text()='${DAONam}']`, Proposal: "//p[text()='Proposals']", cycle: "//p[text()='Creating']", NewProposal: "//span[text()='New Proposal']", diff --git a/tests/CommonFile/PreAction.js b/tests/CommonFile/PreAction.js index 3faa878..99d89cc 100644 --- a/tests/CommonFile/PreAction.js +++ b/tests/CommonFile/PreAction.js @@ -8,13 +8,7 @@ async function PreProposal(page) { await changeNetwork(page); //PreConditions Open URL and Selecting the Ghost-net - const DAOName = await page.evaluate(() => { // Retrieve DAOName from Local Storage - return localStorage.getItem('DAOName'); - }); - - const daoElement = await page.locator(pageLocators.OffChainPoll.DAO.replace('${DAOName}', DAOName)).first(); // Use DAOName to locate elements on the page - - await daoElement.click(); // Perform actions with the located element + await page.click(pageLocators.OffChainPoll.DAO) // Use DAOName to locate elements on the page await page.click(pageLocators.OffChainPoll.Proposal); //Click on Proposal diff --git a/tests/CommonFile/TestData.js b/tests/CommonFile/TestData.js index 0f82675..8060959 100644 --- a/tests/CommonFile/TestData.js +++ b/tests/CommonFile/TestData.js @@ -100,4 +100,7 @@ const TezosTestData = { Amount: "50", }, } -export { TezosTestData }; \ No newline at end of file +const DAONam= TezosTestData.DAOCreate.DAOName; + + +export { TezosTestData , DAONam}; \ No newline at end of file diff --git a/tests/TC06/TC06-01_TokenWithdrawal.spec.js b/tests/TC06-01/TC06-01_TokenWithdrawal.spec.js similarity index 100% rename from tests/TC06/TC06-01_TokenWithdrawal.spec.js rename to tests/TC06-01/TC06-01_TokenWithdrawal.spec.js diff --git a/tests/TC06/TC06-02_TokenStaking.spec.js b/tests/TC06-01/TC06-02_TokenStaking.spec.js similarity index 100% rename from tests/TC06/TC06-02_TokenStaking.spec.js rename to tests/TC06-01/TC06-02_TokenStaking.spec.js diff --git a/tests/TC07/TC07-01_ProposalExecution.spec.js b/tests/TC06-02/TC06-01_ProposalExecution.spec.js similarity index 100% rename from tests/TC07/TC07-01_ProposalExecution.spec.js rename to tests/TC06-02/TC06-01_ProposalExecution.spec.js diff --git a/tests/TC07/TC07-02_TokenUnStaking.spec.js b/tests/TC06-02/TC06-02_TokenUnStaking.spec.js similarity index 100% rename from tests/TC07/TC07-02_TokenUnStaking.spec.js rename to tests/TC06-02/TC06-02_TokenUnStaking.spec.js