Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/feat/lw-10249-revamp-multi-walle…
Browse files Browse the repository at this point in the history
…t-recovery-phrase-screen' into feat/lw-10252-log-posthog-multwallet-restore
  • Loading branch information
szymonmaslowski committed May 6, 2024
2 parents d5430b1 + c990c66 commit 8a16a8f
Show file tree
Hide file tree
Showing 45 changed files with 535 additions and 345 deletions.
8 changes: 5 additions & 3 deletions .github/workflows/e2e-tests-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ env:
NETWORK: ${{ github.event.inputs.network || 'preprod' }}
RUN: ${{ github.run_number }}
DISPLAY: ':99.0'
NODE_OPTIONS: --max-old-space-size=16384

jobs:
tests:
Expand Down Expand Up @@ -73,7 +74,7 @@ jobs:
eval "$runCommand";
- name: Create allure properties
if: always()
working-directory: ./packages/e2e-tests/reports/allure/results
working-directory: './packages/e2e-tests/reports/allure/results'
run: |
echo "
env=${NETWORK}
Expand All @@ -82,19 +83,20 @@ jobs:
platform=Linux
" > environment.properties
- name: Publish allure report to S3
uses: andrcuns/allure-publish-action@v1.0.1
uses: andrcuns/allure-publish-action@v2.6.0
if: always()
env:
GITHUB_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
AWS_ACCESS_KEY_ID: ${{ secrets.E2E_AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.E2E_AWS_SECRET_ACCESS_KEY }}
with:
storageType: s3
resultsGlob: './packages/e2e-tests/reports/allure/results/*'
resultsGlob: './packages/e2e-tests/reports/allure/results'
bucket: lace-e2e-test-results
prefix: 'all/linux/${BROWSER}/${RUN}'
copyLatest: true
ignoreMissingResults: true
baseUrl: 'https://${{ secrets.E2E_REPORTS_USER }}:${{ secrets.E2E_REPORTS_PASSWORD }}@${{ secrets.E2E_REPORTS_URL }}'
- name: Publish artifacts (logs, reports, screenshots)
uses: actions/upload-artifact@v4
if: always()
Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/e2e-tests-win.yml
Original file line number Diff line number Diff line change
Expand Up @@ -154,19 +154,20 @@ jobs:
name: test-artifacts
path: ./packages/e2e-tests
- name: Publish allure report to S3
uses: andrcuns/allure-publish-action@v1.0.1
uses: andrcuns/allure-publish-action@v2.6.0
if: always()
env:
GITHUB_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
AWS_ACCESS_KEY_ID: ${{ secrets.E2E_AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.E2E_AWS_SECRET_ACCESS_KEY }}
with:
storageType: s3
resultsGlob: './packages/e2e-tests/reports/allure/results/*'
resultsGlob: './packages/e2e-tests/reports/allure/results'
bucket: lace-e2e-test-results
prefix: 'all/windows/${BROWSER}/${RUN}'
copyLatest: true
ignoreMissingResults: true
baseUrl: 'https://${{ secrets.E2E_REPORTS_USER }}:${{ secrets.E2E_REPORTS_PASSWORD }}@${{ secrets.E2E_REPORTS_URL }}'
- name: Add link to summary
if: always()
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/smoke-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ jobs:
platform=Linux
" > environment.properties
- name: Publish allure report to S3
uses: andrcuns/allure-publish-action@v2.4.0
uses: andrcuns/allure-publish-action@v2.6.0
if: always()
env:
GITHUB_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand Down
6 changes: 3 additions & 3 deletions apps/browser-extension-wallet/src/hooks/useWalletManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ const { AVAILABLE_CHAINS, CHAIN } = config();
const DEFAULT_CHAIN_ID = Wallet.Cardano.ChainIds[CHAIN];
export const LOCK_VALUE = Buffer.from(JSON.stringify({ lock: 'lock' }), 'utf8');

export interface CreateWallet {
export interface CreateWalletParams {
name: string;
mnemonic: string[];
password: string;
Expand Down Expand Up @@ -79,7 +79,7 @@ export interface UseWalletManager {
wallets: AnyWallet<Wallet.WalletMetadata, Wallet.AccountMetadata>[],
activeWalletProps: WalletManagerActivateProps | null
) => Promise<Wallet.CardanoWallet | null>;
createWallet: (args: CreateWallet) => Promise<Wallet.CardanoWallet>;
createWallet: (args: CreateWalletParams) => Promise<Wallet.CardanoWallet>;
activateWallet: (args: Omit<WalletManagerActivateProps, 'chainId'>) => Promise<void>;
createHardwareWallet: (args: CreateHardwareWallet) => Promise<Wallet.CardanoWallet>;
createHardwareWalletRevamped: CreateHardwareWalletRevamped;
Expand Down Expand Up @@ -459,7 +459,7 @@ export const useWalletManager = (): UseWalletManager => {
name,
password,
chainId = getCurrentChainId()
}: CreateWallet): Promise<Wallet.CardanoWallet> => {
}: CreateWalletParams): Promise<Wallet.CardanoWallet> => {
const accountIndex = 0;
const passphrase = Buffer.from(password, 'utf8');
const keyAgent = await Wallet.KeyManagement.InMemoryKeyAgent.fromBip39MnemonicWords(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,6 @@ export const postHogMultiWalletActions: PostHogMultiWalletActionsType = {
ENTER_WALLET: PostHogAction.MultiWalletRestoreEnterWalletClick,
RECOVERY_PHRASE_PASTE_FROM_CLIPBOARD_CLICK:
PostHogAction.MultiWalletRestoreEnterRecoveryPhrasePasteFromClipboardClick,
RECOVERY_PHRASE_COPY_READ_MORE_CLICK: PostHogAction.MultiWalletCreateSaveRecoveryPhraseCopyReadMoreClick,
RECOVERY_PHRASE_PASTE_READ_MORE_CLICK: PostHogAction.MultiWalletCreateSaveRecoveryPhrasePasteReadMoreClick
}
};
6 changes: 2 additions & 4 deletions apps/browser-extension-wallet/src/routes/wallet-paths.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,7 @@ export const walletRoutePaths = {
create: {
root: '/new-wallet/create',
setup: '/new-wallet/create/setup',
recoveryPhrase: '/new-wallet/create/recovery-phrase',
allDone: '/new-wallet/create/all-done'
recoveryPhrase: '/new-wallet/create/recovery-phrase'
},
hardware: {
root: '/new-wallet/hardware',
Expand All @@ -39,8 +38,7 @@ export const walletRoutePaths = {
restore: {
root: '/new-wallet/restore',
setup: '/new-wallet/restore/setup',
enterRecoveryPhrase: '/new-wallet/restore/enter-recovery-phrase',
allDone: '/new-wallet/restore/all-done'
enterRecoveryPhrase: '/new-wallet/restore/enter-recovery-phrase'
}
},
sharedWallet: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,16 @@ import uniq from 'lodash/uniq';
import flatMap from 'lodash/flatMap';
import { Skeleton } from 'antd';
import { Wallet } from '@lace/cardano';
import type { ActivityType } from '@lace/core';
import {
AssetActivityListProps,
ActivityStatus,
TxOutputInput,
TxSummary,
AssetActivityListProps,
DelegationActivityType,
RewardsDetails,
TransactionActivityType,
DelegationActivityType
TxOutputInput,
TxSummary
} from '@lace/core';
import type { ActivityType } from '@lace/core';
import { PriceResult } from '@hooks';
import { useWalletStore } from '@stores';
import { ActivityDetail as ActivityDetailType } from '@src/types';
Expand Down Expand Up @@ -54,7 +54,8 @@ export const getTransactionData = ({
return outputData.map((output) => ({
...output,
// Show up to 5 addresses below multiple addresses (see LW-4040)
addr: addrs.slice(0, MAX_SUMMARY_ADDRESSES)
addr: addrs.slice(0, MAX_SUMMARY_ADDRESSES),
type: TransactionActivityType.incoming
}));
}

Expand All @@ -63,7 +64,8 @@ export const getTransactionData = ({
.filter((output) => !walletAddresses.includes(output.addr))
.map((output) => ({
...output,
...(!Array.isArray(output.addr) && { addr: [output.addr] })
...(!Array.isArray(output.addr) && { addr: [output.addr] }),
type: TransactionActivityType.outgoing
}));
};

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { PostHogAction } from '@lace/common';
import { WalletSetupOptionsStep } from '@lace/core';
import { useAnalyticsContext } from '@providers';
import { walletRoutePaths } from '@routes';
import React from 'react';
import { useHistory } from 'react-router';
import { useTranslation } from 'react-i18next';
import { postHogMultiWalletActions } from '@providers/AnalyticsProvider/analyticsTracker';

export const Home = (): JSX.Element => {
const { t: translate } = useTranslation();
Expand Down Expand Up @@ -34,16 +34,16 @@ export const Home = (): JSX.Element => {
return (
<WalletSetupOptionsStep
onNewWalletRequest={() => {
analytics.sendEventToPostHog(PostHogAction.MultiWalletCreateClick);
history.push(walletRoutePaths.newWallet.create.setup);
void analytics.sendEventToPostHog(postHogMultiWalletActions.create.SETUP_OPTION_CLICK);
history.push(walletRoutePaths.newWallet.create.root);
}}
onHardwareWalletRequest={() => {
analytics.sendEventToPostHog(PostHogAction.MultiWalletHWClick);
history.push(walletRoutePaths.newWallet.hardware.connect);
void analytics.sendEventToPostHog(postHogMultiWalletActions.hw.SETUP_OPTION_CLICK);
history.push(walletRoutePaths.newWallet.hardware.root);
}}
onRestoreWalletRequest={() => {
analytics.sendEventToPostHog(PostHogAction.MultiWalletRestoreClick);
history.push(walletRoutePaths.newWallet.restore.setup);
void analytics.sendEventToPostHog(postHogMultiWalletActions.restore.SETUP_OPTION_CLICK);
history.push(walletRoutePaths.newWallet.restore.root);
}}
translations={walletSetupOptionsStepTranslations}
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ import {
fillMnemonic,
getNextButton,
mnemonicWords,
setupStep
setupStep,
getBackButton
} from '../tests/utils';
import { StoreProvider } from '@src/stores';
import { APP_MODE_BROWSER } from '@src/utils/constants';
Expand All @@ -37,20 +38,22 @@ import { AnalyticsTracker } from '@providers/AnalyticsProvider/analyticsTracker'
import { CreateWallet } from './CreateWallet';

jest.mock('@providers/AnalyticsProvider', () => ({
useAnalyticsContext: jest.fn<Pick<AnalyticsTracker, 'sendMergeEvent' | 'sendEventToPostHog'>, []>().mockReturnValue({
sendMergeEvent: jest.fn().mockReturnValue(''),
sendEventToPostHog: jest.fn().mockReturnValue('')
})
useAnalyticsContext: jest
.fn<Pick<AnalyticsTracker, 'sendMergeEvent' | 'sendEventToPostHog' | 'sendAliasEvent'>, []>()
.mockReturnValue({
sendMergeEvent: jest.fn().mockReturnValue(''),
sendEventToPostHog: jest.fn().mockReturnValue(''),
sendAliasEvent: jest.fn().mockReturnValue('')
})
}));

const recoveryPhraseStep = async () => {
const nextButton = getNextButton();

let nextButton = getNextButton();
fireEvent.click(nextButton);

await fillMnemonic(0, DEFAULT_MNEMONIC_LENGTH);

await screen.findByText('Total wallet balance');
nextButton = getNextButton();
fireEvent.click(nextButton);
await screen.findByText("Let's set up your new wallet");
};

describe('Multi Wallet Setup/Create Wallet', () => {
Expand Down Expand Up @@ -80,7 +83,7 @@ describe('Multi Wallet Setup/Create Wallet', () => {
<AppSettingsProvider>
<DatabaseProvider>
<StoreProvider appMode={APP_MODE_BROWSER}>
<MemoryRouter initialEntries={[walletRoutePaths.newWallet.create.setup]}>
<MemoryRouter initialEntries={[walletRoutePaths.newWallet.create.root]}>
<CreateWallet providers={providers as Providers} />
{createAssetsRoute()}
</MemoryRouter>
Expand All @@ -89,16 +92,18 @@ describe('Multi Wallet Setup/Create Wallet', () => {
</AppSettingsProvider>
);

await setupStep();
await recoveryPhraseStep();
await setupStep();
});

test('should emit correct value for shouldShowDialog', async () => {
providers.generateMnemonicWords.mockReturnValue(mnemonicWords);

render(
<AppSettingsProvider>
<DatabaseProvider>
<StoreProvider appMode={APP_MODE_BROWSER}>
<MemoryRouter initialEntries={[walletRoutePaths.newWallet.create.setup]}>
<MemoryRouter initialEntries={[walletRoutePaths.newWallet.create.root]}>
<CreateWallet providers={providers as Providers} />
{createAssetsRoute()}
</MemoryRouter>
Expand All @@ -107,14 +112,14 @@ describe('Multi Wallet Setup/Create Wallet', () => {
</AppSettingsProvider>
);

const nameInput = screen.getByTestId('wallet-name-input');

fireEvent.change(nameInput, { target: { value: 'My X Wallet' } });
expect(await firstValueFrom(providers.confirmationDialog.shouldShowDialog$)).toBe(false);

const nextButton = getNextButton();
fireEvent.click(nextButton);
expect(await firstValueFrom(providers.confirmationDialog.shouldShowDialog$)).toBe(true);

fireEvent.change(nameInput, { target: { value: '' } });

const backButton = getBackButton();
fireEvent.click(backButton);
expect(await firstValueFrom(providers.confirmationDialog.shouldShowDialog$)).toBe(false);
});
});
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React from 'react';
import { Route, Switch } from 'react-router-dom';
import { Redirect, Route, Switch } from 'react-router-dom';
import { Setup } from './steps/Setup';
import { NewRecoveryPhrase } from './steps/NewRecoveryPhrase';
import { CreateWalletProvider } from './context';
Expand All @@ -17,8 +17,9 @@ interface Props {
export const CreateWallet = ({ providers }: Props): JSX.Element => (
<CreateWalletProvider providers={providers}>
<Switch>
<Route path={create.setup} component={Setup} />
<Route path={create.recoveryPhrase} component={NewRecoveryPhrase} />
<Route path={create.setup} component={Setup} />
<Redirect from={create.root} to={create.recoveryPhrase} />
</Switch>
</CreateWalletProvider>
);

0 comments on commit 8a16a8f

Please sign in to comment.