Skip to content

Commit 2bb331d

Browse files
authored
test(extension): update tests for HW wallet (#1078)
1 parent f32d2a1 commit 2bb331d

File tree

9 files changed

+106
-107
lines changed

9 files changed

+106
-107
lines changed

packages/common/src/ui/components/Loader/Loader.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@ export interface LoaderProps {
88
}
99

1010
export const Loader = ({ className }: LoaderProps): React.ReactElement => (
11-
<img src={LoaderIcon} className={cn(styles.loader, { [className]: className })} />
11+
<img src={LoaderIcon} className={cn(styles.loader, { [className]: className })} data-testid="loader-image" />
1212
);

packages/core/src/ui/components/WalletSetupRevamp/WalletSetupConnectHardwareWalletStepRevamp.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,12 @@ export const WalletSetupConnectHardwareWalletStepRevamp = ({
3636
)}
3737
{state === 'error' && (
3838
<>
39-
<img src={ExclamationCircleIcon} className={styles.errorImage} alt="hardware wallet connection error image" />
39+
<img
40+
src={ExclamationCircleIcon}
41+
className={styles.errorImage}
42+
alt="hardware wallet connection error image"
43+
data-testid="error-image"
44+
/>
4045
<Banner message={translations.errorMessage} />
4146
</>
4247
)}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import ConnectYourDevicePage from '../../elements/onboarding/ConnectYourDevicePage';
2+
import { t } from '../../utils/translationService';
3+
import { expect } from 'chai';
4+
import OnboardingCommonAssert from './onboardingCommonAssert';
5+
6+
class ConnectYourDevicePageAssert extends OnboardingCommonAssert {
7+
async assertSeeConnectYourDevicePage() {
8+
await this.assertSeeStepTitle(await t('core.walletSetupConnectHardwareWalletStepRevamp.title'));
9+
// TODO: replace subtitle assertions when USE_TREZOR_HW=true
10+
// await this.assertSeeStepSubtitle(await t('core.walletSetupConnectHardwareWalletStepRevamp.subTitle'));
11+
await this.assertSeeStepSubtitle(await t('core.walletSetupConnectHardwareWalletStepRevamp.subTitleLedgerOnly'));
12+
13+
await ConnectYourDevicePage.loader.waitForDisplayed();
14+
15+
await this.assertSeeBackButton();
16+
await this.assertSeeTryAgainButton(false);
17+
18+
await this.assertSeeLegalLinks();
19+
await this.assertSeeHelpAndSupportButton();
20+
}
21+
22+
async assertSeeError(expectedErrorMessage: string) {
23+
await ConnectYourDevicePage.errorImage.waitForDisplayed();
24+
await ConnectYourDevicePage.banner.container.waitForDisplayed();
25+
expect(await ConnectYourDevicePage.banner.description.getText()).to.equal(expectedErrorMessage);
26+
}
27+
28+
async assertSeeTryAgainButton(shouldBeVisible: boolean) {
29+
await ConnectYourDevicePage.tryAgainButton.waitForDisplayed({ reverse: !shouldBeVisible });
30+
if (shouldBeVisible) {
31+
expect(await ConnectYourDevicePage.tryAgainButton.getText()).to.equal(
32+
await t('core.walletSetupConnectHardwareWalletStepRevamp.errorCta')
33+
);
34+
}
35+
}
36+
37+
async assertSeeTryAgainButtonEnabled(shouldBeEnabled: boolean) {
38+
await ConnectYourDevicePage.tryAgainButton.waitForEnabled({ reverse: !shouldBeEnabled });
39+
}
40+
}
41+
42+
export default new ConnectYourDevicePageAssert();

packages/e2e-tests/src/assert/onboarding/onboardingConnectHWPageAssert.ts

Lines changed: 0 additions & 47 deletions
This file was deleted.
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/* eslint-disable no-undef*/
2+
import CommonOnboardingElements from './commonOnboardingElements';
3+
import { ChainablePromiseElement } from 'webdriverio';
4+
import Banner from '../banner';
5+
6+
export class ConnectYourDevicePage extends CommonOnboardingElements {
7+
private LOADER_IMAGE = '[data-testid="loader-image"]';
8+
private ERROR_IMAGE = '[data-testid="error-image"]';
9+
10+
get loader(): ChainablePromiseElement<WebdriverIO.Element> {
11+
return $(this.LOADER_IMAGE);
12+
}
13+
14+
get errorImage(): ChainablePromiseElement<WebdriverIO.Element> {
15+
return $(this.ERROR_IMAGE);
16+
}
17+
18+
get tryAgainButton(): ChainablePromiseElement<WebdriverIO.Element> {
19+
return this.nextButton;
20+
}
21+
22+
get banner(): typeof Banner {
23+
return Banner;
24+
}
25+
}
26+
27+
export default new ConnectYourDevicePage();

packages/e2e-tests/src/elements/onboarding/connectHardwareWalletPage.ts

Lines changed: 0 additions & 34 deletions
This file was deleted.

packages/e2e-tests/src/features/OnboardingHardwareWallet.feature

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,12 @@ Feature: Onboarding - Hardware wallet
44
@LW-3367
55
Scenario: Hardware Wallet - Connect button click
66
When I click "Connect" button on wallet setup page
7-
And I click "OK" button on "Limited support for DApp" modal
8-
Then "Connect Hardware Wallet" page is displayed
9-
10-
@LW-3368
11-
Scenario: Hardware wallet - Legal page - next button disabled
12-
When I click "Connect" button on wallet setup page
13-
And I click "OK" button on "Limited support for DApp" modal
14-
And "Next" button is disabled during onboarding process
7+
Then "Connect your device" page is displayed
158

169
@LW-3374
17-
Scenario: Hardware wallet - Connect Hardware Wallet - back button click
10+
Scenario: Hardware wallet - Connect your device - back button click
1811
Given I click "Connect" button on wallet setup page
19-
And I click "OK" button on "Limited support for DApp" modal
20-
And "Connect Hardware Wallet" page is displayed
12+
And "Connect your device" page is displayed
2113
When I click "Back" button during wallet setup
2214
Then "Get started" page is displayed
2315

@@ -27,10 +19,17 @@ Feature: Onboarding - Hardware wallet
2719
When "Get started" page is displayed
2820
Then I see current onboarding page in <mode> mode
2921
And I click "Connect" button on wallet setup page
30-
And I click "OK" button on "Limited support for DApp" modal
31-
And "Connect Hardware Wallet" page is displayed
22+
And "Connect your device" page is displayed
3223
Then I see current onboarding page in <mode> mode
3324
Examples:
3425
| mode |
3526
| dark |
3627
| light |
28+
29+
@LW-10309
30+
Scenario: Hardware wallet - Connect your device - "No hardware wallet device was chosen." error
31+
When I click "Connect" button on wallet setup page
32+
# Step below triggers error by closing HID window
33+
And I switch to window with Lace
34+
Then "No hardware wallet device was chosen." error is displayed on "Connect your device" page
35+
And "Try again" button is enabled on "Connect your device" page

packages/e2e-tests/src/features/trezor/Trezor.feature

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@ Feature: Trezor Onboarding
44
Scenario: Onboarding Trezor wallet
55
And I connect, unlock and enter correct pin on Trezor emulator
66
Given I click "Connect" button on wallet setup page
7-
And I click "OK" button on "Limited support for DApp" modal
8-
And I am on "Lace terms of use" page and accept terms
9-
And I am on "Help us improve your experience" page
7+
# TODO: remove/replace outdated steps
8+
# And I click "OK" button on "Limited support for DApp" modal
9+
# And I am on "Lace terms of use" page and accept terms
10+
# And I am on "Help us improve your experience" page
1011
When I click "Agree" button on Analytics page
11-
And I click Trezor wallet icon
12+
# And I click Trezor wallet icon
1213
And I click "Next" button during wallet setup
1314
And I select 1 account on Select Account page
1415
When I click "Next" button during wallet setup
@@ -19,6 +20,6 @@ Feature: Trezor Onboarding
1920
And I click "Export" on Trezor Connect page
2021
And I confirm exporting public key on Trezor emulator
2122
And I switch to window with Lace
22-
Then "All done" page is displayed
23+
# Then "All done" page is displayed
2324
When I click "Go to my wallet" button on "All done" page
2425
Then I see LW homepage

packages/e2e-tests/src/steps/onboardingSteps.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import Modal from '../elements/modal';
88
import ModalAssert from '../assert/modalAssert';
99
import OnboardingAnalyticsPage from '../elements/onboarding/analyticsPage';
1010
import OnboardingCommonAssert from '../assert/onboarding/onboardingCommonAssert';
11-
import OnboardingConnectHWPageAssert from '../assert/onboarding/onboardingConnectHWPageAssert';
1211
import OnboardingMainPage from '../elements/onboarding/mainPage';
1312
import OnboardingMainPageAssert from '../assert/onboarding/onboardingMainPageAssert';
1413
import OnboardingWalletSetupPage from '../elements/onboarding/walletSetupPage';
@@ -17,7 +16,6 @@ import TokensPageAssert from '../assert/tokensPageAssert';
1716
import TopNavigationAssert from '../assert/topNavigationAssert';
1817
import testContext from '../utils/testContext';
1918
import CommonAssert from '../assert/commonAssert';
20-
import OnboardingConnectHardwareWalletPage from '../elements/onboarding/connectHardwareWalletPage';
2119
import SelectAccountPage from '../elements/onboarding/selectAccountPage';
2220
import { browser } from '@wdio/globals';
2321
import type { RecoveryPhrase } from '../types/onboarding';
@@ -31,6 +29,7 @@ import { getWalletsFromRepository } from '../fixture/walletRepositoryInitializer
3129
import OnboardingWalletSetupPageAssert from '../assert/onboarding/onboardingWalletSetupPageAssert';
3230
import OnboardingAnalyticsBannerAssert from '../assert/onboarding/onboardingAnalyticsBannerAssert';
3331
import { shuffle } from '../utils/arrayUtils';
32+
import ConnectYourDevicePageAssert from '../assert/onboarding/ConnectYourDevicePageAssert';
3433

3534
const mnemonicWords: string[] = getTestWallet(TestWalletName.TestAutomationWallet).mnemonic ?? [];
3635
const invalidMnemonicWords: string[] = getTestWallet(TestWalletName.InvalidMnemonic).mnemonic ?? [];
@@ -160,12 +159,19 @@ Then(/^I select (12|15|24) word passphrase length$/, async (length: RecoveryPhra
160159
await RecoveryPhrasePage.selectMnemonicLength(length);
161160
});
162161

163-
Then(/^"Connect Hardware Wallet" page is displayed$/, async () => {
164-
await OnboardingConnectHWPageAssert.assertSeeConnectHardwareWalletPage();
162+
Then(/^"Connect your device" page is displayed$/, async () => {
163+
await ConnectYourDevicePageAssert.assertSeeConnectYourDevicePage();
165164
});
166165

167-
Then(/^I click Trezor wallet icon$/, async () => {
168-
await OnboardingConnectHardwareWalletPage.trezorButton.click();
166+
Then(/^"No hardware wallet device was chosen." error is displayed on "Connect your device" page$/, async () => {
167+
await ConnectYourDevicePageAssert.assertSeeError(
168+
await t('core.walletSetupConnectHardwareWalletStepRevamp.errorMessage.devicePickerRejected')
169+
);
170+
});
171+
172+
When(/^"Try again" button is enabled on "Connect your device" page$/, async () => {
173+
await ConnectYourDevicePageAssert.assertSeeTryAgainButton(true);
174+
await ConnectYourDevicePageAssert.assertSeeTryAgainButtonEnabled(true);
169175
});
170176

171177
Then(/^"Restoring a multi-address wallet\?" modal is displayed$/, async () => {

0 commit comments

Comments
 (0)