From c00bf75bdbd8c15138c0320ff595220d9630d8bd Mon Sep 17 00:00:00 2001 From: Kevin Le Seigle Date: Tue, 1 Oct 2024 10:56:17 +0200 Subject: [PATCH] fix: improve ledger sync tests --- .../manageSynchronizedInstances.test.tsx | 8 ++-- .../__tests__/manageYourBackup.test.tsx | 7 +-- .../WalletSync/__tests__/synchronize.test.tsx | 46 +++++++++---------- .../WalletSync/__tests__/walletSync.test.tsx | 12 ++--- .../manageKey.integration.test.tsx | 2 +- .../scanQRCode.integration.test.tsx | 4 +- ...synchronizeWithQrCode.integration.test.tsx | 35 ++++++-------- .../walletSyncActivated.integration.test.tsx | 2 +- .../walletSyncActivation.integration.test.tsx | 6 +-- .../walletSyncSettings.integration.test.tsx | 8 ++-- .../walletSyncStatus.integration.test.tsx | 2 +- 11 files changed, 57 insertions(+), 75 deletions(-) diff --git a/apps/ledger-live-desktop/src/newArch/features/WalletSync/__tests__/manageSynchronizedInstances.test.tsx b/apps/ledger-live-desktop/src/newArch/features/WalletSync/__tests__/manageSynchronizedInstances.test.tsx index 2680ebdd813b..5dab1a1235f8 100644 --- a/apps/ledger-live-desktop/src/newArch/features/WalletSync/__tests__/manageSynchronizedInstances.test.tsx +++ b/apps/ledger-live-desktop/src/newArch/features/WalletSync/__tests__/manageSynchronizedInstances.test.tsx @@ -1,5 +1,5 @@ import React from "react"; -import { render, screen, waitFor } from "tests/testUtils"; +import { render, screen } from "tests/testUtils"; import { WalletSyncTestApp, mockedSdk, simpleTrustChain, walletSyncActivatedState } from "./shared"; import { INSTANCES } from "./shared"; @@ -48,9 +48,7 @@ describe("manageSynchronizedInstances", () => { const button = screen.getByRole("button", { name: "Manage" }); await user.click(button); - const row = screen.getByTestId("walletSync-manage-instances"); - - await waitFor(() => expect(row).toBeDefined()); + const row = await screen.findByTestId("walletSync-manage-instances"); expect(screen.getByText("2 Ledger Live apps synched")).toBeDefined(); @@ -58,7 +56,7 @@ describe("manageSynchronizedInstances", () => { //Manage Synch Instances Step - await waitFor(() => expect(screen.getByText("Ledger Live is synched across")).toBeDefined()); + expect(await screen.findByText("Ledger Live is synched across")).toBeDefined(); const instance = screen.getByTestId("walletSync-manage-instance-currentInstance"); expect(instance).toBeDefined(); diff --git a/apps/ledger-live-desktop/src/newArch/features/WalletSync/__tests__/manageYourBackup.test.tsx b/apps/ledger-live-desktop/src/newArch/features/WalletSync/__tests__/manageYourBackup.test.tsx index 9724ff254bd1..bbbd2b102a3e 100644 --- a/apps/ledger-live-desktop/src/newArch/features/WalletSync/__tests__/manageYourBackup.test.tsx +++ b/apps/ledger-live-desktop/src/newArch/features/WalletSync/__tests__/manageYourBackup.test.tsx @@ -37,8 +37,7 @@ describe("ManageYourBackup", () => { const button = screen.getByRole("button", { name: "Manage" }); await user.click(button); - const row = screen.getByTestId("walletSync-manage-backup"); - await waitFor(() => expect(row).toBeDefined()); + const row = await screen.findByTestId("walletSync-manage-backup"); await user.click(row); @@ -57,8 +56,6 @@ describe("ManageYourBackup", () => { await user.click(deleteButton); //Success message - await waitFor(() => - expect(screen.getByText("Your Ledger Live apps are no longer synched")).toBeDefined(), - ); + expect(await screen.findByText("Your Ledger Live apps are no longer synched")).toBeDefined(); }); }); diff --git a/apps/ledger-live-desktop/src/newArch/features/WalletSync/__tests__/synchronize.test.tsx b/apps/ledger-live-desktop/src/newArch/features/WalletSync/__tests__/synchronize.test.tsx index bab1ec9b8acd..de406c5c0aa1 100644 --- a/apps/ledger-live-desktop/src/newArch/features/WalletSync/__tests__/synchronize.test.tsx +++ b/apps/ledger-live-desktop/src/newArch/features/WalletSync/__tests__/synchronize.test.tsx @@ -1,5 +1,5 @@ import React from "react"; -import { render, screen, waitFor } from "tests/testUtils"; +import { render, screen } from "tests/testUtils"; import { WalletSyncTestApp, simpleTrustChain, walletSyncActivatedState } from "./shared"; jest.mock("../hooks/useQRCode", () => ({ @@ -46,35 +46,35 @@ describe("Synchronize flow", () => { const { button, user } = await openDrawer(); await user.click(button); - const row = screen.getByTestId("walletSync-synchronize"); - await waitFor(() => expect(row).toBeDefined()); + const row = await screen.findByTestId("walletSync-synchronize"); await user.click(row); // QRCode Page - await waitFor(() => - expect(screen.getByText(/Sync with the Ledger Live app on another phone/i)).toBeDefined(), - ); + expect( + await screen.findByText(/Sync with the Ledger Live app on another phone/i), + ).toBeDefined(); + //TODO: Fix this test //PinCode Page after scanning QRCode // Need to wait 3 seconds to simulate the time taken to scan the QR code - setTimeout(async () => { - await waitFor(() => { - screen.debug(); - expect(screen.getByText("Your Ledger Sync code")).toBeDefined(); - }); - }, 3000); + // setTimeout(async () => { + // await waitFor(() => { + // screen.debug(); + // expect(screen.getByText("Your Ledger Sync code")).toBeDefined(); + // }); + // }, 3000); - //Succes Page after PinCode - setTimeout(async () => { - await waitFor(() => { - screen.debug(); - expect( - screen.getByText( - "Changes in your crypto accounts will now automatically appear across Ledger Live apps on synched phones and computers.", - ), - ).toBeDefined(); - }); - }, 3000); + // //Succes Page after PinCode + // setTimeout(async () => { + // await waitFor(() => { + // screen.debug(); + // expect( + // screen.getByText( + // "Changes in your crypto accounts will now automatically appear across Ledger Live apps on synched phones and computers.", + // ), + // ).toBeDefined(); + // }); + // }, 3000); }); }); diff --git a/apps/ledger-live-desktop/src/newArch/features/WalletSync/__tests__/walletSync.test.tsx b/apps/ledger-live-desktop/src/newArch/features/WalletSync/__tests__/walletSync.test.tsx index 37ba12e91a70..e7c0c6bcff53 100644 --- a/apps/ledger-live-desktop/src/newArch/features/WalletSync/__tests__/walletSync.test.tsx +++ b/apps/ledger-live-desktop/src/newArch/features/WalletSync/__tests__/walletSync.test.tsx @@ -2,7 +2,7 @@ * @jest-environment jsdom */ import React from "react"; -import { render, screen, waitFor } from "tests/testUtils"; +import { render, screen } from "tests/testUtils"; import { initialStateWalletSync } from "~/renderer/reducers/walletSync"; import { WalletSyncTestApp, lldWalletSyncFeatureFlag, mockedSdk } from "./shared"; import { INITIAL_STATE as INITIAL_STATE_SETTINGS } from "~/renderer/reducers/settings"; @@ -34,10 +34,7 @@ describe("Rendering", () => { const button = screen.getByRole("button", { name: "Manage" }); await user.click(button); - await waitFor(() => - expect(screen.getByRole("button", { name: "Turn on Ledger Sync" })).toBeDefined(), - ); - + expect(await screen.findByRole("button", { name: "Turn on Ledger Sync" })).toBeDefined(); expect(screen.getByText("I already turned it on")).toBeDefined(); expect(store.getState().settings.overriddenFeatureFlags.lldWalletSync.enabled).toBe(true); expect(screen.getByText(/How does Ledger Sync work?/i)).toBeDefined(); @@ -52,10 +49,7 @@ describe("Rendering", () => { const button = screen.getByRole("button", { name: "Manage" }); await user.click(button); - await waitFor(() => - expect(screen.getByRole("button", { name: "Turn on Ledger Sync" })).toBeDefined(), - ); - + expect(await screen.findByRole("button", { name: "Turn on Ledger Sync" })).toBeDefined(); expect(screen.getByText("I already turned it on")).toBeDefined(); expect(store.getState().settings.overriddenFeatureFlags.lldWalletSync).toBe(undefined); expect(screen.queryByText(/How does Ledger Sync work?/i)).toBeNull(); diff --git a/apps/ledger-live-mobile/src/newArch/features/WalletSync/__integrations__/manageKey.integration.test.tsx b/apps/ledger-live-mobile/src/newArch/features/WalletSync/__integrations__/manageKey.integration.test.tsx index c3abb5b99bbc..24a851318fe8 100644 --- a/apps/ledger-live-mobile/src/newArch/features/WalletSync/__integrations__/manageKey.integration.test.tsx +++ b/apps/ledger-live-mobile/src/newArch/features/WalletSync/__integrations__/manageKey.integration.test.tsx @@ -54,7 +54,7 @@ describe("ManageKey", () => { }); // Check if the ledger sync row is visible - await expect(await screen.findByText(/ledger sync/i)).toBeVisible(); + expect(await screen.findByText(/ledger sync/i)).toBeVisible(); // On Press the ledger sync row await user.press(await screen.findByText(/ledger sync/i)); diff --git a/apps/ledger-live-mobile/src/newArch/features/WalletSync/__integrations__/scanQRCode.integration.test.tsx b/apps/ledger-live-mobile/src/newArch/features/WalletSync/__integrations__/scanQRCode.integration.test.tsx index c6842e49f588..1ee918223362 100644 --- a/apps/ledger-live-mobile/src/newArch/features/WalletSync/__integrations__/scanQRCode.integration.test.tsx +++ b/apps/ledger-live-mobile/src/newArch/features/WalletSync/__integrations__/scanQRCode.integration.test.tsx @@ -11,7 +11,7 @@ describe("scanQRCode", () => { await user.press(await screen.findByText(/ledger sync/i)); await user.press(await screen.findByText(/I already turned it on/i)); await user.press(await screen.findByText(/scan qr code/i)); - await expect(screen.queryAllByText(/show qr/i)).toHaveLength(2); - await expect(screen.getByTestId("ws-scan-camera")).toBeVisible(); + expect(screen.queryAllByText(/show qr/i)).toHaveLength(2); + expect(screen.getByTestId("ws-scan-camera")).toBeVisible(); }); }); diff --git a/apps/ledger-live-mobile/src/newArch/features/WalletSync/__integrations__/synchronizeWithQrCode.integration.test.tsx b/apps/ledger-live-mobile/src/newArch/features/WalletSync/__integrations__/synchronizeWithQrCode.integration.test.tsx index c7b44ffaa99e..50d07a1b1bce 100644 --- a/apps/ledger-live-mobile/src/newArch/features/WalletSync/__integrations__/synchronizeWithQrCode.integration.test.tsx +++ b/apps/ledger-live-mobile/src/newArch/features/WalletSync/__integrations__/synchronizeWithQrCode.integration.test.tsx @@ -1,5 +1,5 @@ import React from "react"; -import { render, screen, waitFor } from "@tests/test-renderer"; +import { render, screen } from "@tests/test-renderer"; import { INITIAL_TEST, WalletSyncSettingsNavigator } from "./shared"; import getWalletSyncEnvironmentParams from "@ledgerhq/live-common/walletSync/getEnvironmentParams"; @@ -21,6 +21,8 @@ jest.mock("@ledgerhq/trustchain/qrcode/index", () => ({ }), })); +jest.useFakeTimers(); + describe("SynchronizeWithQrCode", () => { it("Should display the QR code when 'show qr' toggle is pressed and add a new member through the flow", async () => { const { user } = render(, { @@ -29,26 +31,19 @@ describe("SynchronizeWithQrCode", () => { await user.press(await screen.findByText(/ledger sync/i)); await user.press(await screen.findByText(/I already turned it on/i)); await user.press(await screen.findByText(/scan qr code/i)); - await user.press(await screen.queryAllByText(/show qr/i)[0]); - expect(await screen.getByTestId("ws-qr-code-displayed")).toBeVisible(); + await user.press(screen.queryAllByText(/show qr/i)[0]); + expect(screen.getByTestId("ws-qr-code-displayed")).toBeVisible(); - //PinCode Page after scanning QRCode - // Need to wait 3 seconds to simulate the time taken to scan the QR code - setTimeout(async () => { - await waitFor(() => { - expect(screen.getByText("Enter Ledger Sync code")).toBeDefined(); - }); - }, 3000); + // TODO: We need to simulate the QR code scanning process + // //PinCode Page after scanning QRCode + // // Need to wait 3 seconds to simulate the time taken to scan the QR code + // expect(await screen.findByText("Enter Ledger Sync code")).toBeDefined(); - //Succes Page after PinCode - setTimeout(async () => { - await waitFor(() => { - expect( - screen.getByText( - "Changes in your accounts will now automatically appear across all apps and platforms.", - ), - ).toBeDefined(); - }); - }, 3000); + // //Succes Page after PinCode + // expect( + // await screen.findByText( + // "Changes in your accounts will now automatically appear across all apps and platforms.", + // ), + // ).toBeDefined(); }); }); diff --git a/apps/ledger-live-mobile/src/newArch/features/WalletSync/__integrations__/walletSyncActivated.integration.test.tsx b/apps/ledger-live-mobile/src/newArch/features/WalletSync/__integrations__/walletSyncActivated.integration.test.tsx index 111267b2eb09..25dffa808d72 100644 --- a/apps/ledger-live-mobile/src/newArch/features/WalletSync/__integrations__/walletSyncActivated.integration.test.tsx +++ b/apps/ledger-live-mobile/src/newArch/features/WalletSync/__integrations__/walletSyncActivated.integration.test.tsx @@ -45,7 +45,7 @@ describe("WalletSyncActivated", () => { }); // Check if the ledger sync row is visible - await expect(await screen.findByText(/ledger sync/i)).toBeVisible(); + expect(await screen.findByText(/ledger sync/i)).toBeVisible(); // On Press the ledger sync row await user.press(await screen.findByText(/ledger sync/i)); diff --git a/apps/ledger-live-mobile/src/newArch/features/WalletSync/__integrations__/walletSyncActivation.integration.test.tsx b/apps/ledger-live-mobile/src/newArch/features/WalletSync/__integrations__/walletSyncActivation.integration.test.tsx index e94759a0e760..911dca70a261 100644 --- a/apps/ledger-live-mobile/src/newArch/features/WalletSync/__integrations__/walletSyncActivation.integration.test.tsx +++ b/apps/ledger-live-mobile/src/newArch/features/WalletSync/__integrations__/walletSyncActivation.integration.test.tsx @@ -1,6 +1,6 @@ import React from "react"; import { screen } from "@testing-library/react-native"; -import { render, waitFor } from "@tests/test-renderer"; +import { render } from "@tests/test-renderer"; import { INITIAL_TEST, WalletSyncSharedNavigator } from "./shared"; import { DeviceLike, State } from "~/reducers/types"; import { setEnv } from "@ledgerhq/live-env"; @@ -65,9 +65,7 @@ describe("WalletSyncActivation", () => { }), ); - await waitFor(async () => { - expect(await screen.getByTestId("device-action-loading")).toBeVisible(); - }); + expect(await screen.findByTestId("device-action-loading")).toBeVisible(); // await waitFor(async () => { // expect(await screen.findByText(`Continue on your Ledger Stax`)).toBeVisible(); diff --git a/apps/ledger-live-mobile/src/newArch/features/WalletSync/__integrations__/walletSyncSettings.integration.test.tsx b/apps/ledger-live-mobile/src/newArch/features/WalletSync/__integrations__/walletSyncSettings.integration.test.tsx index 70a4da6378b9..1a4cc5650ddd 100644 --- a/apps/ledger-live-mobile/src/newArch/features/WalletSync/__integrations__/walletSyncSettings.integration.test.tsx +++ b/apps/ledger-live-mobile/src/newArch/features/WalletSync/__integrations__/walletSyncSettings.integration.test.tsx @@ -6,7 +6,7 @@ import { INITIAL_TEST, WalletSyncSettingsNavigator } from "./shared"; describe("WalletSyncSettings", () => { it("Should display the ledger sync row", async () => { render(, { overrideInitialState: INITIAL_TEST }); - await expect(await screen.findByText(/ledger sync/i)).toBeVisible(); + expect(await screen.findByText(/ledger sync/i)).toBeVisible(); }); it("Should open the activation drawer when ledger sync row is pressed", async () => { @@ -14,8 +14,8 @@ describe("WalletSyncSettings", () => { overrideInitialState: INITIAL_TEST, }); await user.press(await screen.findByText(/ledger sync/i)); - await expect(await screen.findByText(/Turn on Ledger Sync for this phone/i)).toBeVisible(); - await expect(await screen.findByText(/I already turned it on/i)).toBeVisible(); + expect(await screen.findByText(/Turn on Ledger Sync for this phone/i)).toBeVisible(); + expect(await screen.findByText(/I already turned it on/i)).toBeVisible(); }); it("Should open the drawer when 'already created a key' button is pressed", async () => { @@ -24,6 +24,6 @@ describe("WalletSyncSettings", () => { }); await user.press(await screen.findByText(/ledger sync/i)); await user.press(await screen.findByText(/I already turned it on/i)); - await expect(await screen.findByText(/choose your sync method/i)).toBeVisible(); + expect(await screen.findByText(/choose your sync method/i)).toBeVisible(); }); }); diff --git a/apps/ledger-live-mobile/src/newArch/features/WalletSync/__integrations__/walletSyncStatus.integration.test.tsx b/apps/ledger-live-mobile/src/newArch/features/WalletSync/__integrations__/walletSyncStatus.integration.test.tsx index ebd00075e4dd..742edf85f2e5 100644 --- a/apps/ledger-live-mobile/src/newArch/features/WalletSync/__integrations__/walletSyncStatus.integration.test.tsx +++ b/apps/ledger-live-mobile/src/newArch/features/WalletSync/__integrations__/walletSyncStatus.integration.test.tsx @@ -53,7 +53,7 @@ describe("WalletSyncStatus", () => { ); // Check if the ledger sync row is visible - await expect(await screen.findByText(/ledger sync/i)).toBeVisible(); + expect(await screen.findByText(/ledger sync/i)).toBeVisible(); // On Press the ledger sync row await user.press(await screen.findByText(/ledger sync/i));