Skip to content

Commit 65b765a

Browse files
committed
test(extension): add new steps for governance actions
1 parent 1b4933d commit 65b765a

File tree

7 files changed

+158
-18
lines changed

7 files changed

+158
-18
lines changed

packages/e2e-tests/src/assert/governance/ConfirmDRepRegistrationPageAssert.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,17 @@ class ConfirmDRepRegistrationPageAssert extends CommonGovernancePageAssert {
1919
);
2020
await this.assertSeeMetadataHeader('core.DRepRegistration.metadata');
2121

22-
if (expectedMetadataUrl) {
23-
await ConfirmDRepRegistrationPage.urlLabel.waitForDisplayed();
22+
await ConfirmDRepRegistrationPage.urlLabel.waitForDisplayed({ reverse: expectedMetadataUrl === '-' });
23+
await ConfirmDRepRegistrationPage.urlValue.waitForDisplayed({ reverse: expectedMetadataUrl === '-' });
24+
if (expectedMetadataUrl !== '-') {
2425
expect(await ConfirmDRepRegistrationPage.urlLabel.getText()).to.equal(await t('core.DRepRegistration.url'));
25-
await ConfirmDRepRegistrationPage.urlValue.waitForDisplayed();
2626
expect(await ConfirmDRepRegistrationPage.urlValue.getText()).to.equal(expectedMetadataUrl);
2727
}
2828

29-
if (expectedMetadataHash) {
30-
await ConfirmDRepRegistrationPage.hashLabel.waitForDisplayed();
29+
await ConfirmDRepRegistrationPage.hashLabel.waitForDisplayed({ reverse: expectedMetadataHash === '-' });
30+
await ConfirmDRepRegistrationPage.hashValue.waitForDisplayed({ reverse: expectedMetadataHash === '-' });
31+
if (expectedMetadataHash !== '-') {
3132
expect(await ConfirmDRepRegistrationPage.hashLabel.getText()).to.equal(await t('core.DRepRegistration.hash'));
32-
await ConfirmDRepRegistrationPage.hashValue.waitForDisplayed();
3333
expect(await ConfirmDRepRegistrationPage.hashValue.getText()).to.equal(expectedMetadataHash);
3434
}
3535

packages/e2e-tests/src/assert/governance/ConfirmDRepRetirementPageAssert.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,26 @@ import ConfirmDRepRetirementPage from '../../elements/governance/ConfirmDRepReti
55
import { t } from '../../utils/translationService';
66

77
class ConfirmDRepRetirementPageAssert extends CommonGovernancePageAssert {
8-
async assertSeeConfirmDRepRetirementPage(expectedDRepID: string, expectedDepositReturned: string) {
8+
async assertSeeConfirmDRepRetirementPage(
9+
expectedDRepID: string,
10+
expectedDepositReturned: string,
11+
shouldDRepMatch = true
12+
) {
913
await this.assertSeeHeader();
1014
await this.assertSeeTitle('core.DRepRetirement.title');
1115
await this.assertSeeGovernanceDemoAppDetails(
1216
GovernanceDemoAppDetails.dAppName,
1317
GovernanceDemoAppDetails.dAppUrlShort,
1418
GovernanceDemoAppDetails.dAppLogoSrc
1519
);
20+
21+
await ConfirmDRepRetirementPage.errorPane.waitForDisplayed({ reverse: !shouldDRepMatch });
22+
if (shouldDRepMatch) {
23+
expect(await ConfirmDRepRetirementPage.errorPane.getText()).to.equal(
24+
await t('core.DRepRetirement.isNotOwnRetirement')
25+
);
26+
}
27+
1628
await this.assertSeeMetadataHeader('core.DRepRetirement.metadata');
1729

1830
await ConfirmDRepRetirementPage.dRepIdLabel.waitForDisplayed();

packages/e2e-tests/src/assert/governance/ConfirmDRepUpdatePageAssert.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,17 @@ class ConfirmDRepUpdatePageAssert extends CommonGovernancePageAssert {
1919
);
2020
await this.assertSeeMetadataHeader('core.DRepUpdate.metadata');
2121

22-
if (expectedMetadataUrl) {
23-
await ConfirmDRepUpdatePage.urlLabel.waitForDisplayed();
22+
await ConfirmDRepUpdatePage.urlLabel.waitForDisplayed({ reverse: expectedMetadataUrl === '-' });
23+
await ConfirmDRepUpdatePage.urlValue.waitForDisplayed({ reverse: expectedMetadataUrl === '-' });
24+
if (expectedMetadataUrl !== '-') {
2425
expect(await ConfirmDRepUpdatePage.urlLabel.getText()).to.equal(await t('core.DRepUpdate.url'));
25-
await ConfirmDRepUpdatePage.urlValue.waitForDisplayed();
2626
expect(await ConfirmDRepUpdatePage.urlValue.getText()).to.equal(expectedMetadataUrl);
2727
}
2828

29-
if (expectedMetadataHash) {
30-
await ConfirmDRepUpdatePage.hashLabel.waitForDisplayed();
29+
await ConfirmDRepUpdatePage.hashLabel.waitForDisplayed({ reverse: expectedMetadataHash === '-' });
30+
await ConfirmDRepUpdatePage.hashValue.waitForDisplayed({ reverse: expectedMetadataHash === '-' });
31+
if (expectedMetadataHash !== '-') {
3132
expect(await ConfirmDRepUpdatePage.hashLabel.getText()).to.equal(await t('core.DRepUpdate.hash'));
32-
await ConfirmDRepUpdatePage.hashValue.waitForDisplayed();
3333
expect(await ConfirmDRepUpdatePage.hashValue.getText()).to.equal(expectedMetadataHash);
3434
}
3535

packages/e2e-tests/src/elements/governance/CommonGovernanceActionPageElements.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,16 @@ class CommonGovernanceActionPageElements extends CommonDappPageElements {
1717
get confirmButton(): ChainablePromiseElement {
1818
return $(this.CONFIRM_BUTTON);
1919
}
20+
21+
async clickButton(button: 'Cancel' | 'Confirm'): Promise<void> {
22+
if (button === 'Cancel') {
23+
await this.cancelButton.waitForClickable();
24+
await this.cancelButton.click();
25+
} else {
26+
await this.confirmButton.waitForClickable();
27+
await this.confirmButton.click();
28+
}
29+
}
2030
}
2131

2232
export default CommonGovernanceActionPageElements;

packages/e2e-tests/src/elements/governance/GovernanceDemoAppPage.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import DAppConnectorPageObject from '../../pageobject/dAppConnectorPageObject';
22
import { GovernanceDemoAppDetails } from '../../assert/governance/GovernanceDemoAppDetails';
3+
import { browser } from '@wdio/globals';
34

45
// App is not adjusted for testing e.g. lack of custom testIDs
56
// https://ryun1.github.io/cip95-cardano-wallet-connector/
@@ -55,7 +56,7 @@ class GovernanceDemoAppPage {
5556
return $(this.VOTE_DELEGATION_STAKE_CREDENTIAL_INPUT);
5657
}
5758

58-
get buildVoteDelegationCertAndAddToTxButton() {
59+
get voteDelegationBuildCertAndAddToTxButton() {
5960
return $(this.BUILD_VOTE_DELEGATION_CERT_AND_ADD_TO_TX_BUTTON);
6061
}
6162

@@ -75,7 +76,7 @@ class GovernanceDemoAppPage {
7576
return $(this.DREP_REGISTRATION_METADATA_HASH_INPUT);
7677
}
7778

78-
get dRepRegistrationCertAndAddToTxButton() {
79+
get dRepRegistrationBuildCertAndAddToTxButton() {
7980
return $(this.BUILD_DREP_REGISTRATION_CERT_AND_ADD_TO_TX_BUTTON);
8081
}
8182

@@ -87,15 +88,15 @@ class GovernanceDemoAppPage {
8788
return $(this.DREP_UPDATE_METADATA_HASH_INPUT);
8889
}
8990

90-
get dRepUpdateCertAndAddToTxButton() {
91+
get dRepUpdateBuildCertAndAddToTxButton() {
9192
return $(this.BUILD_DREP_UPDATE_CERT_AND_ADD_TO_TX_BUTTON);
9293
}
9394

9495
get dRepRetirementDepositRefundAmountInput() {
9596
return $(this.DREP_RETIREMENT_DEPOSIT_REFUND_AMOUNT_INPUT);
9697
}
9798

98-
get dRepRetirementCertAndAddToTxButton() {
99+
get dRepRetirementBuildCertAndAddToTxButton() {
99100
return $(this.BUILD_DREP_RETIREMENT_CERT_AND_ADD_TO_TX_BUTTON);
100101
}
101102

packages/e2e-tests/src/hooks/beforeTagHooks.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ Before(
3838

3939
Before(
4040
{
41-
tags: '@Tokens-popup or @Transactions-Popup or @Staking-Popup or @LockWallet-popup or @Top-Navigation-Popup or @AddressBook-popup or @Common-Popup or @SendTx-Simple-Popup or @MainNavigation-Popup or @Settings-Popup or @NFTs-Popup or @NFT-Folders-Popup or @Send-Transaction-Metadata-Popup or @ForgotPassword or @DAppConnector-Popup'
41+
tags: '@Tokens-popup or @Transactions-Popup or @Staking-Popup or @LockWallet-popup or @Top-Navigation-Popup or @AddressBook-popup or @Common-Popup or @SendTx-Simple-Popup or @MainNavigation-Popup or @Settings-Popup or @NFTs-Popup or @NFT-Folders-Popup or @Send-Transaction-Metadata-Popup or @ForgotPassword or @DAppConnector-Popup or @Governance'
4242
},
4343
async () => {
4444
await popupViewWalletInitialization();
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
import { Then, When } from '@cucumber/cucumber';
2+
import GovernanceDemoAppPage from '../elements/governance/GovernanceDemoAppPage';
3+
import ConfirmVoteDelegationPageAssert from '../assert/governance/ConfirmVoteDelegationPageAssert';
4+
import ConfirmDRepRegistrationPageAssert from '../assert/governance/ConfirmDRepRegistrationPageAssert';
5+
import ConfirmDRepUpdatePageAssert from '../assert/governance/ConfirmDRepUpdatePageAssert';
6+
import ConfirmDRepRetirementPageAssert from '../assert/governance/ConfirmDRepRetirementPageAssert';
7+
import ConfirmVoteDelegationPage from '../elements/governance/ConfirmVoteDelegationPage';
8+
import ConfirmDRepRegistrationPage from '../elements/governance/ConfirmDRepRegistrationPage';
9+
import ConfirmDRepRetirementPage from '../elements/governance/ConfirmDRepRetirementPage';
10+
import ConfirmDRepUpdatePage from '../elements/governance/ConfirmDRepUpdatePage';
11+
import GovernanceActionAllDonePageAssert from '../assert/governance/GovernanceActionAllDonePageAssert';
12+
13+
When(/^I open and authorize Governance Demo App$/, async () => {
14+
await GovernanceDemoAppPage.openAndAuthorize();
15+
});
16+
17+
When(/^I open "Vote Delegation" form$/, async () => {
18+
await GovernanceDemoAppPage.voteDelegationTabButton.waitForClickable();
19+
await GovernanceDemoAppPage.voteDelegationTabButton.click();
20+
});
21+
22+
When(/^I enter "([^"]*)" into "Target of Vote Delegation" field on "Vote Delegation" form$/, async (target: string) => {
23+
await GovernanceDemoAppPage.fillVoteDelegationTargetOfVoteDelegation(target);
24+
});
25+
26+
When(/^I enter "([^"]*)" into "Stake Credential" field on "Vote Delegation" form$/, async (target: string) => {
27+
await GovernanceDemoAppPage.fillVoteDelegationStakeCredential(target);
28+
});
29+
30+
When(
31+
/^I build and submit "(Vote Delegation|DRep Registration|DRep Update|DRep Retirement|Vote)" transaction$/,
32+
async (transactionType: 'Vote Delegation' | 'DRep Registration' | 'DRep Update' | 'DRep Retirement' | 'Vote') => {
33+
switch (transactionType) {
34+
case 'Vote Delegation':
35+
await GovernanceDemoAppPage.voteDelegationBuildCertAndAddToTxButton.waitForClickable();
36+
await GovernanceDemoAppPage.voteDelegationBuildCertAndAddToTxButton.click();
37+
break;
38+
case 'DRep Registration':
39+
await GovernanceDemoAppPage.dRepRegistrationBuildCertAndAddToTxButton.waitForClickable();
40+
await GovernanceDemoAppPage.dRepRegistrationBuildCertAndAddToTxButton.click();
41+
break;
42+
case 'DRep Update':
43+
await GovernanceDemoAppPage.dRepUpdateBuildCertAndAddToTxButton.waitForClickable();
44+
await GovernanceDemoAppPage.dRepUpdateBuildCertAndAddToTxButton.click();
45+
break;
46+
case 'DRep Retirement':
47+
await GovernanceDemoAppPage.dRepRetirementBuildCertAndAddToTxButton.waitForClickable();
48+
await GovernanceDemoAppPage.dRepRetirementBuildCertAndAddToTxButton.click();
49+
break;
50+
case 'Vote':
51+
// TODO
52+
break;
53+
}
54+
await GovernanceDemoAppPage.signAndSubmitButton.click();
55+
}
56+
);
57+
58+
Then(/^"Confirm vote delegation" window with "([^"]*)" target is displayed$/, async (target: string) => {
59+
await ConfirmVoteDelegationPageAssert.assertSeeConfirmVoteDelegationPage(target);
60+
});
61+
62+
Then(
63+
/^"Confirm DRep Registration" window with DRep ID "([^"]*)", Metadata URL "([^"]*)" and Metadata Hash "([^"]*)" is displayed$/,
64+
async (expectedDRepID: string, expectedUrl: string, expectedHash: string) => {
65+
await ConfirmDRepRegistrationPageAssert.assertSeeConfirmDRepRegistrationPage(
66+
expectedDRepID,
67+
expectedUrl,
68+
expectedHash
69+
);
70+
}
71+
);
72+
73+
Then(
74+
/^"Confirm DRep Update" window with DRep ID "([^"]*)", Metadata URL "([^"]*)" and Metadata Hash "([^"]*)" is displayed$/,
75+
async (expectedDRepID: string, expectedUrl: string, expectedHash: string) => {
76+
await ConfirmDRepUpdatePageAssert.assertSeeConfirmDRepUpdatePage(expectedDRepID, expectedUrl, expectedHash);
77+
}
78+
);
79+
80+
Then(
81+
/^"Confirm DRep Retirement" window with DRep ID "([^"]*)" and deposit returned "([^"]*)" is displayed$/,
82+
async (expectedDRepID: string, expectedDepositReturned: string) => {
83+
await ConfirmDRepRetirementPageAssert.assertSeeConfirmDRepRetirementPage(expectedDRepID, expectedDepositReturned);
84+
}
85+
);
86+
87+
When(
88+
/^I click "(Cancel|Confirm)" button on "(Vote Delegation|DRep Registration|DRep Update|DRep Retirement|Vote)" window$/,
89+
async (
90+
button: 'Cancel' | 'Confirm',
91+
window: 'Vote Delegation' | 'DRep Registration' | 'DRep Update' | 'DRep Retirement' | 'Vote'
92+
) => {
93+
switch (window) {
94+
case 'Vote Delegation':
95+
await ConfirmVoteDelegationPage.clickButton(button);
96+
break;
97+
case 'DRep Registration':
98+
await ConfirmDRepRegistrationPage.clickButton(button);
99+
break;
100+
case 'DRep Update':
101+
await ConfirmDRepUpdatePage.clickButton(button);
102+
break;
103+
case 'DRep Retirement':
104+
await ConfirmDRepRetirementPage.clickButton(button);
105+
break;
106+
case 'Vote':
107+
// TODO
108+
break;
109+
default:
110+
throw new Error(`Unsupported window: ${window}`);
111+
}
112+
}
113+
);
114+
115+
Then(/^"All done" screen is displayed for governance transaction$/, async () => {
116+
await GovernanceActionAllDonePageAssert.assertSeeAllDonePage();
117+
});

0 commit comments

Comments
 (0)