Skip to content
This repository has been archived by the owner on Jun 16, 2022. It is now read-only.

Commit

Permalink
Merge branch 'develop' of github.com:LedgerHQ/ledger-live-desktop int…
Browse files Browse the repository at this point in the history
…o LL-7231
  • Loading branch information
LFBarreto committed Oct 8, 2021
2 parents 382c49e + f4bba7e commit 4e4159b
Show file tree
Hide file tree
Showing 2,614 changed files with 4,930 additions and 50,585 deletions.
3 changes: 0 additions & 3 deletions .flowconfig
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,6 @@ flow-defs
module.system.node.resolve_dirname=./src
module.system.node.resolve_dirname=node_modules
module.name_mapper='^~' ->'<PROJECT_ROOT>/src'
module.name_mapper='^@ui' ->'<PROJECT_ROOT>/ui-lib/lib'
module.name_mapper='^@components' ->'<PROJECT_ROOT>/src/renderer/components'
module.name_mapper='^@styles' ->'<PROJECT_ROOT>/src/renderer/styles'
munge_underscores=true
esproposal.optional_chaining=enable

Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/build-linux-prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ on:

jobs:
build:
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
steps:
- name: Cancel Previous Runs
uses: styfle/[email protected]
Expand All @@ -22,6 +22,8 @@ jobs:
node-version: 14.x
- name: install linux dependencies
run: sudo apt-get update && sudo apt-get install libudev-dev libusb-1.0-0-dev
- name: install and switch to GCC 5.4
run: ./tools/g++-5.4/install.sh
- name: get yarn cache
id: yarn-cache
run: echo "::set-output name=dir::$(yarn cache dir)"
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/bundle-app.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ on:

jobs:
cancel-previous:
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
steps:
- name: Cancel Previous Runs
run: curl -i -L -X GET 'https://github-actions-live.ledger.tools/api/cancel-previous-run?runId=${{ github.run_id }}&owner=LedgerHQ&repo=ledger-live-desktop&branch=${{ github.event.pull_request.head.ref }}&headSha=${{ github.event.pull_request.head.sha }}'
Expand Down Expand Up @@ -72,7 +72,7 @@ jobs:
path: dist/${{ steps.post-version.outputs.name }}-${{ steps.post-version.outputs.version }}-mac.dmg

bundle-linux:
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
needs: cancel-previous
steps:
- uses: ledgerhq/actions/[email protected]
Expand All @@ -94,6 +94,8 @@ jobs:
git config user.name "Team Live"
- name: install linux dependencies
run: sudo apt-get update && sudo apt-get install libudev-dev libusb-1.0-0-dev
- name: install and switch to GCC 5.4
run: ./tools/g++-5.4/install.sh
- name: get yarn cache
id: yarn-cache
run: echo "::set-output name=dir::$(yarn cache dir)"
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ on:

jobs:
test:
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
steps:
- name: Cancel Previous Runs
run: curl -i -L -X GET 'https://github-actions-live.ledger.tools/api/cancel-previous-run?runId=${{ github.run_id }}&owner=LedgerHQ&repo=ledger-live-desktop&branch=${{ github.event.pull_request.head.ref }}&headSha=${{ github.event.pull_request.head.sha }}'
Expand All @@ -30,6 +30,8 @@ jobs:
if: always() && job.status != 'cancelled'
with:
node-version: 14.x
- name: install and switch to GCC 5.4
run: ./tools/g++-5.4/install.sh
- name: get yarn cache
if: always() && job.status != 'cancelled'
id: yarn-cache
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/sync-nightly-develop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:

jobs:
sync-branches:
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
with:
Expand Down
5 changes: 5 additions & 0 deletions CONTRIBUTORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Ledger Live contributors

> External teams and individuals who help making Ledger Live better 🚀
- ElrondTeam: `elrond` coin family integration
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
**[We are hiring, join us! 👨‍💻👩‍💻](https://jobs.lever.co/ledger/?department=Engineering)**


# Ledger Live (desktop) [![Crowdin](https://d322cqt584bo4o.cloudfront.net/ledger-wallet/localized.svg)](https://crowdin.com/project/ledger-wallet)

- Related: [ledger-live-mobile](https://github.com/ledgerhq/ledger-live-mobile)
Expand Down
1 change: 0 additions & 1 deletion contributor.md

This file was deleted.

114 changes: 83 additions & 31 deletions cryptoassets.md

Large diffs are not rendered by default.

7 changes: 7 additions & 0 deletions electron-builder-nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,3 +57,10 @@ files:
- "!node_modules/sodium-native/prebuilds"
- "!node_modules/sodium-native/tmp"
# Exclude modules

publish:
- provider: github
- provider: s3
bucket: ledger-live-download-sandbox
region: eu-west-1
acl: private
7 changes: 0 additions & 7 deletions main.webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -61,13 +61,6 @@ module.exports = {
resolve: {
alias: {
"~": path.resolve(__dirname, "src"),
"@ui": path.resolve(__dirname, "ui-lib", "lib"),
"@components": process.env.REBRANDING
? path.resolve(__dirname, "ui-lib", "lib", "components")
: path.resolve(__dirname, "src", "renderer", "components"),
"@styles": process.env.REBRANDING
? path.resolve(__dirname, "ui-lib", "lib", "styles")
: path.resolve(__dirname, "src", "renderer", "styles"),
},
},
};
10 changes: 4 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"license": "MIT",
"private": true,
"main": "./.webpack/main.bundle.js",
"version": "2.33.1",
"version": "2.34.0",
"scripts": {
"start:prod": "electron ./.webpack/main.bundle.js",
"start": "cross-env NODE_ENV=development node ./tools/main.js",
Expand Down Expand Up @@ -38,9 +38,7 @@
"spectron": "jest \"tests/specs/.*\\.spec\\.js\" --maxWorkers=4",
"spectron-inband": "jest \"tests/specs/.*\\.spec\\.js\" --runInBand",
"spectron-coverage": "nyc report --reporter=text-lcov --temp-dir=tests/coverage | codecov --pipe --disable=gcov",
"generate-screenshots": "PWD=$(pwd); cd docker; docker run -v \"$PWD:/github/workspace\" -w \"/github/workspace\" --rm -it $(docker build -q .)",
"storybook": "cd ui-lib && yarn storybook",
"build-storybook": "cd ui-lib && yarn build-storybook"
"generate-screenshots": "PWD=$(pwd); cd docker; docker run -v \"$PWD:/github/workspace\" -w \"/github/workspace\" --rm -it $(docker build -q .)"
},
"dependencies": {
"@electron/remote": "^1.2.1",
Expand All @@ -52,7 +50,7 @@
"@ledgerhq/hw-transport-http": "6.7.0",
"@ledgerhq/hw-transport-node-hid-singleton": "6.7.0",
"@ledgerhq/ledger-core": "6.13.0",
"@ledgerhq/live-common": "^21.5.1",
"@ledgerhq/live-common": "^21.7.0",
"@ledgerhq/logs": "6.2.0",
"@polkadot/react-identicon": "0.85.3",
"@tippyjs/react": "^4.2.5",
Expand All @@ -77,7 +75,7 @@
"invariant": "^2.2.4",
"ip": "^1.1.5",
"isomorphic-unfetch": "^3.1.0",
"json-rpc-2.0": "^0.2.16",
"json-rpc-2.0": "^0.2.19",
"jsqr": "^1.4.0",
"lodash": "^4.17.21",
"lru-cache": "^5.1.1",
Expand Down
7 changes: 0 additions & 7 deletions preloader.webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,13 +77,6 @@ module.exports = {
resolve: {
alias: {
"~": path.resolve(__dirname, "src"),
"@ui": path.resolve(__dirname, "ui-lib", "lib"),
"@components": process.env.REBRANDING
? path.resolve(__dirname, "ui-lib", "lib", "components")
: path.resolve(__dirname, "src", "renderer", "components"),
"@styles": process.env.REBRANDING
? path.resolve(__dirname, "ui-lib", "lib", "styles")
: path.resolve(__dirname, "src", "renderer", "styles"),
},
},
};
7 changes: 0 additions & 7 deletions renderer.webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -96,13 +96,6 @@ module.exports = {
resolve: {
alias: {
"~": path.resolve(__dirname, "src"),
"@ui": path.resolve(__dirname, "ui-lib", "lib"),
"@components": process.env.REBRANDING
? path.resolve(__dirname, "ui-lib", "lib", "components")
: path.resolve(__dirname, "src", "renderer", "components"),
"@styles": process.env.REBRANDING
? path.resolve(__dirname, "ui-lib", "lib", "styles")
: path.resolve(__dirname, "src", "renderer", "styles"),
},
},
};
3 changes: 3 additions & 0 deletions src/config/urls.js
Original file line number Diff line number Diff line change
Expand Up @@ -195,4 +195,7 @@ export const urls = {
"https://shop.ledger.com/pages/ledger-live-terms-of-use?utm_source=ledger_live_desktop&utm_medium=self_referral&utm_content=compoundTnC",
approvedOperation:
"https://support.ledger.com/hc/en-us/articles/360020849134-Track-your-transaction?docs=true",
elrond: {
website: "https://elrond.com",
},
};
19 changes: 19 additions & 0 deletions src/internal/commands/getAppAndVersion.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// @flow
import type { Observable } from "rxjs";
import { withDevice } from "@ledgerhq/live-common/lib/hw/deviceAccess";
import getAppAndVersion from "@ledgerhq/live-common/lib/hw/getAppAndVersion";
import { from } from "rxjs";

type Input = {
deviceId: string,
};

const cmd = ({
deviceId,
}: Input): Observable<{
name: string,
version: string,
flags: number | Buffer,
}> => withDevice(deviceId)(transport => from(getAppAndVersion(transport)));

export default cmd;
2 changes: 2 additions & 0 deletions src/internal/commands/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import websocketBridge from "./websocketBridge";
import checkSignatureAndPrepare from "./checkSignatureAndPrepare";
import getTransactionId from "./getTransactionId";
import scanDescriptors from "./scanDescriptors";
import getAppAndVersion from "./getAppAndVersion";
import { commands as bridgeProxyCommands } from "~/renderer/bridge/proxy-commands";

export const commandsById = {
Expand Down Expand Up @@ -53,6 +54,7 @@ export const commandsById = {
websocketBridge,
scanDescriptors,
signMessage,
getAppAndVersion,
};

export type Commands = typeof commandsById;
Expand Down
54 changes: 54 additions & 0 deletions src/renderer/Default.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import Manager from "~/renderer/screens/manager";
import Exchange from "~/renderer/screens/exchange";
import Swap from "~/renderer/screens/exchange/swap";
import Swap2 from "~/renderer/screens/exchange/Swap2";
import USBTroubleshooting from "~/renderer/screens/USBTroubleshooting";
import Account from "~/renderer/screens/account";
import WalletConnect from "~/renderer/screens/WalletConnect";
import Asset from "~/renderer/screens/asset";
Expand Down Expand Up @@ -42,12 +43,14 @@ import AnalyticsConsole from "~/renderer/components/AnalyticsConsole";
import DebugMock from "~/renderer/components/debug/DebugMock";
import { DebugWrapper } from "~/renderer/components/debug/shared";
import useDeeplink from "~/renderer/hooks/useDeeplinking";
import useUSBTroubleshooting from "~/renderer/hooks/useUSBTroubleshooting";
import ModalsLayer from "./ModalsLayer";
import { ToastOverlay } from "~/renderer/components/ToastOverlay";
import Drawer from "~/renderer/drawers/Drawer";
import UpdateBanner from "~/renderer/components/Updater/Banner";
import FirmwareUpdateBanner from "~/renderer/components/FirmwareUpdateBanner";
import useEnv from "~/renderer/hooks/useEnv";
import pkg from "../../package.json";

export const TopBannerContainer: ThemedComponent<{}> = styled.div`
position: sticky;
Expand All @@ -58,12 +61,57 @@ export const TopBannerContainer: ThemedComponent<{}> = styled.div`
}
`;

const NightlyLayerR = () => {
const children = [];
const w = 200;
const h = 100;
for (let y = 0.5; y < 20; y++) {
for (let x = 0.5; x < 20; x++) {
children.push(
<div
style={{
position: "absolute",
textAlign: "center",
top: y * h,
left: x * w,
transform: "rotate(-45deg)",
}}
>
NIGHTLY
<br />
{__APP_VERSION__}
</div>,
);
}
}
return (
<div
style={{
position: "fixed",
pointerEvents: "none",
opacity: 0.1,
color: "#777",
width: "100%",
height: "100%",
top: 0,
right: 0,
zIndex: 999999999999,
}}
>
{children}
</div>
);
};

const NightlyLayer = React.memo(NightlyLayerR);

export default function Default() {
const location = useLocation();
const ref: React$ElementRef<any> = useRef();
const isSwapV2Enabled = useEnv("EXPERIMENTAL_SWAP") && __DEV__;
const SwapComponent = useMemo(() => (isSwapV2Enabled ? Swap2 : Swap), [isSwapV2Enabled]);
useDeeplink();
useUSBTroubleshooting();

// every time location changes, scroll back up
useEffect(() => {
Expand Down Expand Up @@ -153,12 +201,18 @@ export default function Default() {
render={(props: any) => <Asset {...props} />}
/>
<Route path="/swap" render={props => <SwapComponent {...props} />} />
<Route
path="/USBTroubleshooting"
render={props => <USBTroubleshooting {...props} />}
/>
</Switch>
</Page>
<Drawer />
<ToastOverlay />
</Box>

{pkg.name === "ledger-live-desktop-nightly" ? <NightlyLayer /> : null}

<LibcoreBusyIndicator />
<DeviceBusyIndicator />
<KeyboardContent sequence="BJBJBJ">
Expand Down
1 change: 1 addition & 0 deletions src/renderer/ModalsLayer.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ const ModalsLayer = ({ visibleModals }: *) => {
({ name, MODAL_SHOW_ONCE }) =>
MODAL_SHOW_ONCE && global.sessionStorage.setItem(name, Date.now()),
);

return (
<Transition
in={filteredModals.length > 0}
Expand Down
2 changes: 2 additions & 0 deletions src/renderer/actions/settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ export const setCounterValue = (counterValue: string) =>
export const setLanguage = (language: ?string) => saveSettings({ language });
export const setTheme = (theme: ?string) => saveSettings({ theme });
export const setRegion = (region: ?string) => saveSettings({ region });
export const setUSBTroubleshootingIndex = (USBTroubleshootingIndex?: number) =>
saveSettings({ USBTroubleshootingIndex });

export function useHideEmptyTokenAccounts() {
const dispatch = useDispatch();
Expand Down
4 changes: 1 addition & 3 deletions src/renderer/components/ConnectTroubleshooting.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import styled from "styled-components";
import Box from "~/renderer/components/Box";
import Text from "~/renderer/components/Text";
import ConnectTroubleshootingHelpButton from "~/renderer/components/ConnectTroubleshootingHelpButton";
import RepairDeviceButton from "~/renderer/components/RepairDeviceButton";
import type { ThemedComponent } from "~/renderer/styles/StyleProvider";

type Props = {
Expand All @@ -23,7 +22,7 @@ const Wrapper: ThemedComponent<{}> = styled(Box).attrs({
max-width: 550px;
`;

const ConnectTroubleshooting = ({ appearsAfterDelay = 15000, onRepair }: Props) => {
const ConnectTroubleshooting = ({ appearsAfterDelay = 15000 }: Props) => {
const [visible, setVisible] = useState(false);
useEffect(() => {
const timeout = setTimeout(() => setVisible(true), appearsAfterDelay);
Expand All @@ -37,7 +36,6 @@ const ConnectTroubleshooting = ({ appearsAfterDelay = 15000, onRepair }: Props)
<Trans i18nKey="connectTroubleshooting.desc" />
</Text>
</Box>
{onRepair ? <RepairDeviceButton onRepair={onRepair} /> : null}
<Box flex="1" />
<ConnectTroubleshootingHelpButton buttonProps={{ primary: true }} />
</Wrapper>
Expand Down
Loading

1 comment on commit 4e4159b

@ledger-live-comment-bot
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cc @LFBarreto

Lint outputs ✅

Tests outputs ✅

PASS src/generate-cryptoassets-md.test.js

Test Suites: 1 skipped, 1 passed, 1 of 2 total
Tests: 5 skipped, 1 passed, 6 total
Snapshots: 0 total
Time: 2.046 s
Ran all test suites matching /src/i.

Tests outputs ❌

PASS tests/specs/swap.spec.js (90.193 s)
PASS tests/specs/firmwareupdate.spec.js (95.567 s)
PASS tests/specs/global.spec.js (147.303 s)
PASS tests/specs/updater.spec.js (128.13 s)
PASS tests/specs/settings/passwordlock.spec.js (138.214 s)
PASS tests/specs/accounts/subaccount.spec.js (237.378 s)
PASS tests/specs/walletconnect.spec.js (103.583 s)
PASS tests/specs/manager.spec.js (85.055 s)
PASS tests/specs/settings/settings.spec.js (74.022 s)
PASS tests/specs/settings/developermode.spec.js (337.056 s)
PASS tests/specs/accounts/ethereum.spec.js (340.729 s)
PASS tests/specs/accounts/bitcoin.spec.js (315.215 s)
PASS tests/specs/accounts/cosmos.spec.js (318.928 s)
PASS tests/specs/USBTroubleshooting/windows.spec.js (128.564 s)
PASS tests/specs/USBTroubleshooting/linux.spec.js (132.308 s)
PASS tests/specs/USBTroubleshooting/mac.spec.js (132.93 s)
PASS tests/specs/accounts/tezos.spec.js (327.811 s)
PASS tests/specs/accounts/xrp.spec.js (339.831 s)
PASS tests/specs/accounts/global.spec.js (275.795 s)
FAIL tests/specs/onboarding/nanoX.spec.js (314.834 s)
● onboarding nanoX - new nano › selects nanoX

Expected image to match or be a close match to snapshot but was 1.7415249558303887% different from snapshot (25234 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-nanoX-flow-nanoX-diff.png

  31 |     await nanoX.click();
  32 |     await app.client.pause(500);
> 33 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                           ^
  34 |       customSnapshotIdentifier: `onboarding-${device}-flow-` + device,
  35 |     });
  36 |   });

  at Object.<anonymous> (tests/specs/onboarding/flows.js:33:43)

● onboarding nanoX - connect › selects nanoX

Expected image to match or be a close match to snapshot but was 1.7415249558303887% different from snapshot (25234 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-nanoX-flow-nanoX-diff.png

  31 |     await nanoX.click();
  32 |     await app.client.pause(500);
> 33 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                           ^
  34 |       customSnapshotIdentifier: `onboarding-${device}-flow-` + device,
  35 |     });
  36 |   });

  at Object.<anonymous> (tests/specs/onboarding/flows.js:33:43)
      at runMicrotasks (<anonymous>)

● onboarding nanoX - connect › displays warning if initialized already

Expected image to match or be a close match to snapshot but was 0.0774383544921875% different from snapshot (609 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-initialized-seedwarning-nanoX-diff.png

  48 |       await app.client.pause(500);
  49 |       // eslint-disable-next-line jest/no-conditional-expect
> 50 |       expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                             ^
  51 |         // wave thing
  52 |         failureThreshold: 15,
  53 |         failureThresholdType: "pixel",

  at Object.<anonymous> (tests/specs/onboarding/flows.js:50:45)
      at runMicrotasks (<anonymous>)

● onboarding nanoX - connect › goes to connect 1/2

Expected image to match or be a close match to snapshot but was 96.00791931152344% different from snapshot (755037 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-genuine-check-initialized-device-nanoX-diff.png

  63 |   it("goes to connect 1/2", async () => {
  64 |     await app.client.pause(500);
> 65 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                           ^
  66 |       // wave thing
  67 |       failureThreshold: 15,
  68 |       failureThresholdType: "pixel",

  at Object.<anonymous> (tests/specs/onboarding/flows.js:65:43)
      at runMicrotasks (<anonymous>)

● onboarding nanoX - connect › check nano

element click intercepted: element click intercepted: Element <button id="pair-my-nano-cta" font-size="4" color="rgba(20, 37, 51, 0.6)" class="Button__Base-iiqPvS lKjyN">...</button> is not clickable at point (865, 708). Other element would receive the click: <div id="modal-backdrop" class="Modal__Container-hvWOwx iWtBPS" style="opacity: 1; justify-content: center; pointer-events: auto;">...</div>
  (Session info: chrome=91.0.4472.164)

  74 |   it("check nano", async () => {
  75 |     const next = await $("#pair-my-nano-cta");
> 76 |     await next.click();
     |     ^
  77 |     await app.client.pause(2000);
  78 |     await mockDeviceEvent(
  79 |       {

  at Object.getErrorFromResponseBody (node_modules/webdriver/build/utils.js:94:12)
  at WebDriverRequest._request (node_modules/webdriver/build/request.js:134:31)
      at runMicrotasks (<anonymous>)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Element.elementErrorHandlerCallbackFn (node_modules/webdriverio/build/middlewares.js:17:32)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Element.elementErrorHandlerCallbackFn (node_modules/webdriverio/build/middlewares.js:17:32)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Object.<anonymous> (tests/specs/onboarding/flows.js:76:5)

● onboarding nanoX - connect › should be on app

Can't call click on element with selector "#genuine-check-cta" because element wasn't found

   98 |   it("should be on app", async () => {
   99 |     const next = await $("#genuine-check-cta");
> 100 |     await next.click();
      |     ^
  101 |     await app.client.pause(200);
  102 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
  103 |       customSnapshotIdentifier: "onboarding-complete-" + cta.replace("#", "") + "-" + device,

  at Object.implicitWait [as default] (node_modules/webdriverio/build/utils/implicitWait.js:26:19)
      at runMicrotasks (<anonymous>)
  at Element.elementErrorHandlerCallbackFn (node_modules/webdriverio/build/middlewares.js:13:29)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Object.<anonymous> (tests/specs/onboarding/flows.js:100:5)

● onboarding nanoX - restore › selects nanoX

Expected image to match or be a close match to snapshot but was 1.7415249558303887% different from snapshot (25234 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-nanoX-flow-nanoX-diff.png

  31 |     await nanoX.click();
  32 |     await app.client.pause(500);
> 33 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                           ^
  34 |       customSnapshotIdentifier: `onboarding-${device}-flow-` + device,
  35 |     });
  36 |   });

  at Object.<anonymous> (tests/specs/onboarding/flows.js:33:43)

● onboarding nanoX - restore › goes to restore 1

Expected image to match or be a close match to snapshot but was 0.0774383544921875% different from snapshot (609 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-restore-seedwarning-nanoX-diff.png

  287 |       await next.click();
  288 |       await app.client.pause(500);
> 289 |       expect(await app.client.screenshot()).toMatchImageSnapshot({
      |                                             ^
  290 |         // wave thing
  291 |         failureThreshold: 15,
  292 |         failureThresholdType: "pixel",

  at Object.<anonymous> (tests/specs/onboarding/flows.js:289:45)

● onboarding nanoX - restore › shows the recovery seed modal

Expected image to match or be a close match to snapshot but was 4.1351318359375% different from snapshot (32520 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-restore-start-nanoX-diff.png

  300 |       await next.click();
  301 |       await app.client.pause(500);
> 302 |       expect(await app.client.screenshot()).toMatchImageSnapshot({
      |                                             ^
  303 |         // wave thing
  304 |         failureThreshold: 15,
  305 |         failureThresholdType: "pixel",

  at Object.<anonymous> (tests/specs/onboarding/flows.js:302:45)

› 7 snapshots failed.
FAIL tests/specs/onboarding/nanoS.spec.js (292.451 s)
● onboarding nanoS - new nano › selects nanoS

Expected image to match or be a close match to snapshot but was 1.7415249558303887% different from snapshot (25234 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-nanoS-flow-nanoS-diff.png

  31 |     await nanoX.click();
  32 |     await app.client.pause(500);
> 33 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                           ^
  34 |       customSnapshotIdentifier: `onboarding-${device}-flow-` + device,
  35 |     });
  36 |   });

  at Object.<anonymous> (tests/specs/onboarding/flows.js:33:43)
      at runMicrotasks (<anonymous>)

● onboarding nanoS - connect › selects nanoS

Expected image to match or be a close match to snapshot but was 1.7415249558303887% different from snapshot (25234 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-nanoS-flow-nanoS-diff.png

  31 |     await nanoX.click();
  32 |     await app.client.pause(500);
> 33 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                           ^
  34 |       customSnapshotIdentifier: `onboarding-${device}-flow-` + device,
  35 |     });
  36 |   });

  at Object.<anonymous> (tests/specs/onboarding/flows.js:33:43)

● onboarding nanoS - connect › displays warning if initialized already

Expected image to match or be a close match to snapshot but was 0.0774383544921875% different from snapshot (609 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-initialized-seedwarning-nanoS-diff.png

  48 |       await app.client.pause(500);
  49 |       // eslint-disable-next-line jest/no-conditional-expect
> 50 |       expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                             ^
  51 |         // wave thing
  52 |         failureThreshold: 15,
  53 |         failureThresholdType: "pixel",

  at Object.<anonymous> (tests/specs/onboarding/flows.js:50:45)

● onboarding nanoS - connect › goes to connect 1/2

Expected image to match or be a close match to snapshot but was 96.00880940755209% different from snapshot (755044 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-genuine-check-initialized-device-nanoS-diff.png

  63 |   it("goes to connect 1/2", async () => {
  64 |     await app.client.pause(500);
> 65 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                           ^
  66 |       // wave thing
  67 |       failureThreshold: 15,
  68 |       failureThresholdType: "pixel",

  at Object.<anonymous> (tests/specs/onboarding/flows.js:65:43)

● onboarding nanoS - connect › check nano

element click intercepted: element click intercepted: Element <button id="pair-my-nano-cta" font-size="4" color="rgba(20, 37, 51, 0.6)" class="Button__Base-iiqPvS lKjyN">...</button> is not clickable at point (865, 708). Other element would receive the click: <div id="modal-backdrop" class="Modal__Container-hvWOwx iWtBPS" style="opacity: 1; justify-content: center; pointer-events: auto;">...</div>
  (Session info: chrome=91.0.4472.164)

  74 |   it("check nano", async () => {
  75 |     const next = await $("#pair-my-nano-cta");
> 76 |     await next.click();
     |     ^
  77 |     await app.client.pause(2000);
  78 |     await mockDeviceEvent(
  79 |       {

  at Object.getErrorFromResponseBody (node_modules/webdriver/build/utils.js:94:12)
  at WebDriverRequest._request (node_modules/webdriver/build/request.js:134:31)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Element.elementErrorHandlerCallbackFn (node_modules/webdriverio/build/middlewares.js:17:32)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Element.elementErrorHandlerCallbackFn (node_modules/webdriverio/build/middlewares.js:17:32)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Object.<anonymous> (tests/specs/onboarding/flows.js:76:5)

● onboarding nanoS - connect › should be on app

Can't call click on element with selector "#genuine-check-cta" because element wasn't found

   98 |   it("should be on app", async () => {
   99 |     const next = await $("#genuine-check-cta");
> 100 |     await next.click();
      |     ^
  101 |     await app.client.pause(200);
  102 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
  103 |       customSnapshotIdentifier: "onboarding-complete-" + cta.replace("#", "") + "-" + device,

  at Object.implicitWait [as default] (node_modules/webdriverio/build/utils/implicitWait.js:26:19)
  at Element.elementErrorHandlerCallbackFn (node_modules/webdriverio/build/middlewares.js:13:29)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Object.<anonymous> (tests/specs/onboarding/flows.js:100:5)

● onboarding nanoS - restore › selects nanoS

Expected image to match or be a close match to snapshot but was 1.7415249558303887% different from snapshot (25234 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-nanoS-flow-nanoS-diff.png

  31 |     await nanoX.click();
  32 |     await app.client.pause(500);
> 33 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                           ^
  34 |       customSnapshotIdentifier: `onboarding-${device}-flow-` + device,
  35 |     });
  36 |   });

  at Object.<anonymous> (tests/specs/onboarding/flows.js:33:43)

● onboarding nanoS - restore › goes to restore 1

Expected image to match or be a close match to snapshot but was 0.0774383544921875% different from snapshot (609 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-restore-seedwarning-nanoS-diff.png

  287 |       await next.click();
  288 |       await app.client.pause(500);
> 289 |       expect(await app.client.screenshot()).toMatchImageSnapshot({
      |                                             ^
  290 |         // wave thing
  291 |         failureThreshold: 15,
  292 |         failureThresholdType: "pixel",

  at Object.<anonymous> (tests/specs/onboarding/flows.js:289:45)

● onboarding nanoS - restore › shows the recovery seed modal

Expected image to match or be a close match to snapshot but was 4.1351318359375% different from snapshot (32520 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-restore-start-nanoS-diff.png

  300 |       await next.click();
  301 |       await app.client.pause(500);
> 302 |       expect(await app.client.screenshot()).toMatchImageSnapshot({
      |                                             ^
  303 |         // wave thing
  304 |         failureThreshold: 15,
  305 |         failureThresholdType: "pixel",

  at Object.<anonymous> (tests/specs/onboarding/flows.js:302:45)

› 7 snapshots failed.
FAIL tests/specs/onboarding/blue.spec.js (271.631 s)
● onboarding blue - new nano › selects blue

Expected image to match or be a close match to snapshot but was 1.7415249558303887% different from snapshot (25234 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-blue-flow-blue-diff.png

  31 |     await nanoX.click();
  32 |     await app.client.pause(500);
> 33 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                           ^
  34 |       customSnapshotIdentifier: `onboarding-${device}-flow-` + device,
  35 |     });
  36 |   });

  at Object.<anonymous> (tests/specs/onboarding/flows.js:33:43)
      at runMicrotasks (<anonymous>)

● onboarding blue - connect › selects blue

Expected image to match or be a close match to snapshot but was 1.7415249558303887% different from snapshot (25234 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-blue-flow-blue-diff.png

  31 |     await nanoX.click();
  32 |     await app.client.pause(500);
> 33 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                           ^
  34 |       customSnapshotIdentifier: `onboarding-${device}-flow-` + device,
  35 |     });
  36 |   });

  at Object.<anonymous> (tests/specs/onboarding/flows.js:33:43)

● onboarding blue - connect › displays warning if initialized already

Expected image to match or be a close match to snapshot but was 0.0774383544921875% different from snapshot (609 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-initialized-seedwarning-blue-diff.png

  48 |       await app.client.pause(500);
  49 |       // eslint-disable-next-line jest/no-conditional-expect
> 50 |       expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                             ^
  51 |         // wave thing
  52 |         failureThreshold: 15,
  53 |         failureThresholdType: "pixel",

  at Object.<anonymous> (tests/specs/onboarding/flows.js:50:45)

● onboarding blue - connect › goes to connect 1/2

Expected image to match or be a close match to snapshot but was 96.00817362467447% different from snapshot (755039 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-genuine-check-initialized-device-blue-diff.png

  63 |   it("goes to connect 1/2", async () => {
  64 |     await app.client.pause(500);
> 65 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                           ^
  66 |       // wave thing
  67 |       failureThreshold: 15,
  68 |       failureThresholdType: "pixel",

  at Object.<anonymous> (tests/specs/onboarding/flows.js:65:43)

● onboarding blue - connect › check nano

element click intercepted: element click intercepted: Element <button id="pair-my-nano-cta" font-size="4" color="rgba(20, 37, 51, 0.6)" class="Button__Base-iiqPvS lKjyN">...</button> is not clickable at point (865, 708). Other element would receive the click: <div id="modal-backdrop" class="Modal__Container-hvWOwx iWtBPS" style="opacity: 1; justify-content: center; pointer-events: auto;">...</div>
  (Session info: chrome=91.0.4472.164)

  74 |   it("check nano", async () => {
  75 |     const next = await $("#pair-my-nano-cta");
> 76 |     await next.click();
     |     ^
  77 |     await app.client.pause(2000);
  78 |     await mockDeviceEvent(
  79 |       {

  at Object.getErrorFromResponseBody (node_modules/webdriver/build/utils.js:94:12)
  at WebDriverRequest._request (node_modules/webdriver/build/request.js:134:31)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Element.elementErrorHandlerCallbackFn (node_modules/webdriverio/build/middlewares.js:17:32)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Element.elementErrorHandlerCallbackFn (node_modules/webdriverio/build/middlewares.js:17:32)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Object.<anonymous> (tests/specs/onboarding/flows.js:76:5)

● onboarding blue - connect › should be on app

Can't call click on element with selector "#genuine-check-cta" because element wasn't found

   98 |   it("should be on app", async () => {
   99 |     const next = await $("#genuine-check-cta");
> 100 |     await next.click();
      |     ^
  101 |     await app.client.pause(200);
  102 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
  103 |       customSnapshotIdentifier: "onboarding-complete-" + cta.replace("#", "") + "-" + device,

  at Object.implicitWait [as default] (node_modules/webdriverio/build/utils/implicitWait.js:26:19)
  at Element.elementErrorHandlerCallbackFn (node_modules/webdriverio/build/middlewares.js:13:29)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Object.<anonymous> (tests/specs/onboarding/flows.js:100:5)

● onboarding blue - restore › selects blue

Expected image to match or be a close match to snapshot but was 1.7415249558303887% different from snapshot (25234 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-blue-flow-blue-diff.png

  31 |     await nanoX.click();
  32 |     await app.client.pause(500);
> 33 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                           ^
  34 |       customSnapshotIdentifier: `onboarding-${device}-flow-` + device,
  35 |     });
  36 |   });

  at Object.<anonymous> (tests/specs/onboarding/flows.js:33:43)

● onboarding blue - restore › goes to restore 1

Expected image to match or be a close match to snapshot but was 0.0774383544921875% different from snapshot (609 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-restore-seedwarning-blue-diff.png

  287 |       await next.click();
  288 |       await app.client.pause(500);
> 289 |       expect(await app.client.screenshot()).toMatchImageSnapshot({
      |                                             ^
  290 |         // wave thing
  291 |         failureThreshold: 15,
  292 |         failureThresholdType: "pixel",

  at Object.<anonymous> (tests/specs/onboarding/flows.js:289:45)

● onboarding blue - restore › shows the recovery seed modal

Expected image to match or be a close match to snapshot but was 4.1351318359375% different from snapshot (32520 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-restore-start-blue-diff.png

  300 |       await next.click();
  301 |       await app.client.pause(500);
> 302 |       expect(await app.client.screenshot()).toMatchImageSnapshot({
      |                                             ^
  303 |         // wave thing
  304 |         failureThreshold: 15,
  305 |         failureThresholdType: "pixel",

  at Object.<anonymous> (tests/specs/onboarding/flows.js:302:45)

› 7 snapshots failed.
Summary of all failing tests
FAIL tests/specs/onboarding/nanoX.spec.js (314.834 s)
● onboarding nanoX - new nano › selects nanoX

Expected image to match or be a close match to snapshot but was 1.7415249558303887% different from snapshot (25234 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-nanoX-flow-nanoX-diff.png

  31 |     await nanoX.click();
  32 |     await app.client.pause(500);
> 33 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                           ^
  34 |       customSnapshotIdentifier: `onboarding-${device}-flow-` + device,
  35 |     });
  36 |   });

  at Object.<anonymous> (tests/specs/onboarding/flows.js:33:43)

● onboarding nanoX - connect › selects nanoX

Expected image to match or be a close match to snapshot but was 1.7415249558303887% different from snapshot (25234 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-nanoX-flow-nanoX-diff.png

  31 |     await nanoX.click();
  32 |     await app.client.pause(500);
> 33 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                           ^
  34 |       customSnapshotIdentifier: `onboarding-${device}-flow-` + device,
  35 |     });
  36 |   });

  at Object.<anonymous> (tests/specs/onboarding/flows.js:33:43)
      at runMicrotasks (<anonymous>)

● onboarding nanoX - connect › displays warning if initialized already

Expected image to match or be a close match to snapshot but was 0.0774383544921875% different from snapshot (609 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-initialized-seedwarning-nanoX-diff.png

  48 |       await app.client.pause(500);
  49 |       // eslint-disable-next-line jest/no-conditional-expect
> 50 |       expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                             ^
  51 |         // wave thing
  52 |         failureThreshold: 15,
  53 |         failureThresholdType: "pixel",

  at Object.<anonymous> (tests/specs/onboarding/flows.js:50:45)
      at runMicrotasks (<anonymous>)

● onboarding nanoX - connect › goes to connect 1/2

Expected image to match or be a close match to snapshot but was 96.00791931152344% different from snapshot (755037 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-genuine-check-initialized-device-nanoX-diff.png

  63 |   it("goes to connect 1/2", async () => {
  64 |     await app.client.pause(500);
> 65 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                           ^
  66 |       // wave thing
  67 |       failureThreshold: 15,
  68 |       failureThresholdType: "pixel",

  at Object.<anonymous> (tests/specs/onboarding/flows.js:65:43)
      at runMicrotasks (<anonymous>)

● onboarding nanoX - connect › check nano

element click intercepted: element click intercepted: Element <button id="pair-my-nano-cta" font-size="4" color="rgba(20, 37, 51, 0.6)" class="Button__Base-iiqPvS lKjyN">...</button> is not clickable at point (865, 708). Other element would receive the click: <div id="modal-backdrop" class="Modal__Container-hvWOwx iWtBPS" style="opacity: 1; justify-content: center; pointer-events: auto;">...</div>
  (Session info: chrome=91.0.4472.164)

  74 |   it("check nano", async () => {
  75 |     const next = await $("#pair-my-nano-cta");
> 76 |     await next.click();
     |     ^
  77 |     await app.client.pause(2000);
  78 |     await mockDeviceEvent(
  79 |       {

  at Object.getErrorFromResponseBody (node_modules/webdriver/build/utils.js:94:12)
  at WebDriverRequest._request (node_modules/webdriver/build/request.js:134:31)
      at runMicrotasks (<anonymous>)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Element.elementErrorHandlerCallbackFn (node_modules/webdriverio/build/middlewares.js:17:32)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Element.elementErrorHandlerCallbackFn (node_modules/webdriverio/build/middlewares.js:17:32)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Object.<anonymous> (tests/specs/onboarding/flows.js:76:5)

● onboarding nanoX - connect › should be on app

Can't call click on element with selector "#genuine-check-cta" because element wasn't found

   98 |   it("should be on app", async () => {
   99 |     const next = await $("#genuine-check-cta");
> 100 |     await next.click();
      |     ^
  101 |     await app.client.pause(200);
  102 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
  103 |       customSnapshotIdentifier: "onboarding-complete-" + cta.replace("#", "") + "-" + device,

  at Object.implicitWait [as default] (node_modules/webdriverio/build/utils/implicitWait.js:26:19)
      at runMicrotasks (<anonymous>)
  at Element.elementErrorHandlerCallbackFn (node_modules/webdriverio/build/middlewares.js:13:29)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Object.<anonymous> (tests/specs/onboarding/flows.js:100:5)

● onboarding nanoX - restore › selects nanoX

Expected image to match or be a close match to snapshot but was 1.7415249558303887% different from snapshot (25234 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-nanoX-flow-nanoX-diff.png

  31 |     await nanoX.click();
  32 |     await app.client.pause(500);
> 33 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                           ^
  34 |       customSnapshotIdentifier: `onboarding-${device}-flow-` + device,
  35 |     });
  36 |   });

  at Object.<anonymous> (tests/specs/onboarding/flows.js:33:43)

● onboarding nanoX - restore › goes to restore 1

Expected image to match or be a close match to snapshot but was 0.0774383544921875% different from snapshot (609 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-restore-seedwarning-nanoX-diff.png

  287 |       await next.click();
  288 |       await app.client.pause(500);
> 289 |       expect(await app.client.screenshot()).toMatchImageSnapshot({
      |                                             ^
  290 |         // wave thing
  291 |         failureThreshold: 15,
  292 |         failureThresholdType: "pixel",

  at Object.<anonymous> (tests/specs/onboarding/flows.js:289:45)

● onboarding nanoX - restore › shows the recovery seed modal

Expected image to match or be a close match to snapshot but was 4.1351318359375% different from snapshot (32520 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-restore-start-nanoX-diff.png

  300 |       await next.click();
  301 |       await app.client.pause(500);
> 302 |       expect(await app.client.screenshot()).toMatchImageSnapshot({
      |                                             ^
  303 |         // wave thing
  304 |         failureThreshold: 15,
  305 |         failureThresholdType: "pixel",

  at Object.<anonymous> (tests/specs/onboarding/flows.js:302:45)

FAIL tests/specs/onboarding/nanoS.spec.js (292.451 s)
● onboarding nanoS - new nano › selects nanoS

Expected image to match or be a close match to snapshot but was 1.7415249558303887% different from snapshot (25234 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-nanoS-flow-nanoS-diff.png

  31 |     await nanoX.click();
  32 |     await app.client.pause(500);
> 33 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                           ^
  34 |       customSnapshotIdentifier: `onboarding-${device}-flow-` + device,
  35 |     });
  36 |   });

  at Object.<anonymous> (tests/specs/onboarding/flows.js:33:43)
      at runMicrotasks (<anonymous>)

● onboarding nanoS - connect › selects nanoS

Expected image to match or be a close match to snapshot but was 1.7415249558303887% different from snapshot (25234 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-nanoS-flow-nanoS-diff.png

  31 |     await nanoX.click();
  32 |     await app.client.pause(500);
> 33 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                           ^
  34 |       customSnapshotIdentifier: `onboarding-${device}-flow-` + device,
  35 |     });
  36 |   });

  at Object.<anonymous> (tests/specs/onboarding/flows.js:33:43)

● onboarding nanoS - connect › displays warning if initialized already

Expected image to match or be a close match to snapshot but was 0.0774383544921875% different from snapshot (609 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-initialized-seedwarning-nanoS-diff.png

  48 |       await app.client.pause(500);
  49 |       // eslint-disable-next-line jest/no-conditional-expect
> 50 |       expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                             ^
  51 |         // wave thing
  52 |         failureThreshold: 15,
  53 |         failureThresholdType: "pixel",

  at Object.<anonymous> (tests/specs/onboarding/flows.js:50:45)

● onboarding nanoS - connect › goes to connect 1/2

Expected image to match or be a close match to snapshot but was 96.00880940755209% different from snapshot (755044 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-genuine-check-initialized-device-nanoS-diff.png

  63 |   it("goes to connect 1/2", async () => {
  64 |     await app.client.pause(500);
> 65 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                           ^
  66 |       // wave thing
  67 |       failureThreshold: 15,
  68 |       failureThresholdType: "pixel",

  at Object.<anonymous> (tests/specs/onboarding/flows.js:65:43)

● onboarding nanoS - connect › check nano

element click intercepted: element click intercepted: Element <button id="pair-my-nano-cta" font-size="4" color="rgba(20, 37, 51, 0.6)" class="Button__Base-iiqPvS lKjyN">...</button> is not clickable at point (865, 708). Other element would receive the click: <div id="modal-backdrop" class="Modal__Container-hvWOwx iWtBPS" style="opacity: 1; justify-content: center; pointer-events: auto;">...</div>
  (Session info: chrome=91.0.4472.164)

  74 |   it("check nano", async () => {
  75 |     const next = await $("#pair-my-nano-cta");
> 76 |     await next.click();
     |     ^
  77 |     await app.client.pause(2000);
  78 |     await mockDeviceEvent(
  79 |       {

  at Object.getErrorFromResponseBody (node_modules/webdriver/build/utils.js:94:12)
  at WebDriverRequest._request (node_modules/webdriver/build/request.js:134:31)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Element.elementErrorHandlerCallbackFn (node_modules/webdriverio/build/middlewares.js:17:32)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Element.elementErrorHandlerCallbackFn (node_modules/webdriverio/build/middlewares.js:17:32)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Object.<anonymous> (tests/specs/onboarding/flows.js:76:5)

● onboarding nanoS - connect › should be on app

Can't call click on element with selector "#genuine-check-cta" because element wasn't found

   98 |   it("should be on app", async () => {
   99 |     const next = await $("#genuine-check-cta");
> 100 |     await next.click();
      |     ^
  101 |     await app.client.pause(200);
  102 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
  103 |       customSnapshotIdentifier: "onboarding-complete-" + cta.replace("#", "") + "-" + device,

  at Object.implicitWait [as default] (node_modules/webdriverio/build/utils/implicitWait.js:26:19)
  at Element.elementErrorHandlerCallbackFn (node_modules/webdriverio/build/middlewares.js:13:29)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Object.<anonymous> (tests/specs/onboarding/flows.js:100:5)

● onboarding nanoS - restore › selects nanoS

Expected image to match or be a close match to snapshot but was 1.7415249558303887% different from snapshot (25234 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-nanoS-flow-nanoS-diff.png

  31 |     await nanoX.click();
  32 |     await app.client.pause(500);
> 33 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                           ^
  34 |       customSnapshotIdentifier: `onboarding-${device}-flow-` + device,
  35 |     });
  36 |   });

  at Object.<anonymous> (tests/specs/onboarding/flows.js:33:43)

● onboarding nanoS - restore › goes to restore 1

Expected image to match or be a close match to snapshot but was 0.0774383544921875% different from snapshot (609 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-restore-seedwarning-nanoS-diff.png

  287 |       await next.click();
  288 |       await app.client.pause(500);
> 289 |       expect(await app.client.screenshot()).toMatchImageSnapshot({
      |                                             ^
  290 |         // wave thing
  291 |         failureThreshold: 15,
  292 |         failureThresholdType: "pixel",

  at Object.<anonymous> (tests/specs/onboarding/flows.js:289:45)

● onboarding nanoS - restore › shows the recovery seed modal

Expected image to match or be a close match to snapshot but was 4.1351318359375% different from snapshot (32520 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-restore-start-nanoS-diff.png

  300 |       await next.click();
  301 |       await app.client.pause(500);
> 302 |       expect(await app.client.screenshot()).toMatchImageSnapshot({
      |                                             ^
  303 |         // wave thing
  304 |         failureThreshold: 15,
  305 |         failureThresholdType: "pixel",

  at Object.<anonymous> (tests/specs/onboarding/flows.js:302:45)

FAIL tests/specs/onboarding/blue.spec.js (271.631 s)
● onboarding blue - new nano › selects blue

Expected image to match or be a close match to snapshot but was 1.7415249558303887% different from snapshot (25234 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-blue-flow-blue-diff.png

  31 |     await nanoX.click();
  32 |     await app.client.pause(500);
> 33 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                           ^
  34 |       customSnapshotIdentifier: `onboarding-${device}-flow-` + device,
  35 |     });
  36 |   });

  at Object.<anonymous> (tests/specs/onboarding/flows.js:33:43)
      at runMicrotasks (<anonymous>)

● onboarding blue - connect › selects blue

Expected image to match or be a close match to snapshot but was 1.7415249558303887% different from snapshot (25234 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-blue-flow-blue-diff.png

  31 |     await nanoX.click();
  32 |     await app.client.pause(500);
> 33 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                           ^
  34 |       customSnapshotIdentifier: `onboarding-${device}-flow-` + device,
  35 |     });
  36 |   });

  at Object.<anonymous> (tests/specs/onboarding/flows.js:33:43)

● onboarding blue - connect › displays warning if initialized already

Expected image to match or be a close match to snapshot but was 0.0774383544921875% different from snapshot (609 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-initialized-seedwarning-blue-diff.png

  48 |       await app.client.pause(500);
  49 |       // eslint-disable-next-line jest/no-conditional-expect
> 50 |       expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                             ^
  51 |         // wave thing
  52 |         failureThreshold: 15,
  53 |         failureThresholdType: "pixel",

  at Object.<anonymous> (tests/specs/onboarding/flows.js:50:45)

● onboarding blue - connect › goes to connect 1/2

Expected image to match or be a close match to snapshot but was 96.00817362467447% different from snapshot (755039 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-genuine-check-initialized-device-blue-diff.png

  63 |   it("goes to connect 1/2", async () => {
  64 |     await app.client.pause(500);
> 65 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                           ^
  66 |       // wave thing
  67 |       failureThreshold: 15,
  68 |       failureThresholdType: "pixel",

  at Object.<anonymous> (tests/specs/onboarding/flows.js:65:43)

● onboarding blue - connect › check nano

element click intercepted: element click intercepted: Element <button id="pair-my-nano-cta" font-size="4" color="rgba(20, 37, 51, 0.6)" class="Button__Base-iiqPvS lKjyN">...</button> is not clickable at point (865, 708). Other element would receive the click: <div id="modal-backdrop" class="Modal__Container-hvWOwx iWtBPS" style="opacity: 1; justify-content: center; pointer-events: auto;">...</div>
  (Session info: chrome=91.0.4472.164)

  74 |   it("check nano", async () => {
  75 |     const next = await $("#pair-my-nano-cta");
> 76 |     await next.click();
     |     ^
  77 |     await app.client.pause(2000);
  78 |     await mockDeviceEvent(
  79 |       {

  at Object.getErrorFromResponseBody (node_modules/webdriver/build/utils.js:94:12)
  at WebDriverRequest._request (node_modules/webdriver/build/request.js:134:31)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Element.elementErrorHandlerCallbackFn (node_modules/webdriverio/build/middlewares.js:17:32)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Element.elementErrorHandlerCallbackFn (node_modules/webdriverio/build/middlewares.js:17:32)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Object.<anonymous> (tests/specs/onboarding/flows.js:76:5)

● onboarding blue - connect › should be on app

Can't call click on element with selector "#genuine-check-cta" because element wasn't found

   98 |   it("should be on app", async () => {
   99 |     const next = await $("#genuine-check-cta");
> 100 |     await next.click();
      |     ^
  101 |     await app.client.pause(200);
  102 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
  103 |       customSnapshotIdentifier: "onboarding-complete-" + cta.replace("#", "") + "-" + device,

  at Object.implicitWait [as default] (node_modules/webdriverio/build/utils/implicitWait.js:26:19)
  at Element.elementErrorHandlerCallbackFn (node_modules/webdriverio/build/middlewares.js:13:29)
  at Element.wrapCommandFn (node_modules/@wdio/utils/build/shim.js:58:29)
  at Object.<anonymous> (tests/specs/onboarding/flows.js:100:5)

● onboarding blue - restore › selects blue

Expected image to match or be a close match to snapshot but was 1.7415249558303887% different from snapshot (25234 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-blue-flow-blue-diff.png

  31 |     await nanoX.click();
  32 |     await app.client.pause(500);
> 33 |     expect(await app.client.screenshot()).toMatchImageSnapshot({
     |                                           ^
  34 |       customSnapshotIdentifier: `onboarding-${device}-flow-` + device,
  35 |     });
  36 |   });

  at Object.<anonymous> (tests/specs/onboarding/flows.js:33:43)

● onboarding blue - restore › goes to restore 1

Expected image to match or be a close match to snapshot but was 0.0774383544921875% different from snapshot (609 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-restore-seedwarning-blue-diff.png

  287 |       await next.click();
  288 |       await app.client.pause(500);
> 289 |       expect(await app.client.screenshot()).toMatchImageSnapshot({
      |                                             ^
  290 |         // wave thing
  291 |         failureThreshold: 15,
  292 |         failureThresholdType: "pixel",

  at Object.<anonymous> (tests/specs/onboarding/flows.js:289:45)

● onboarding blue - restore › shows the recovery seed modal

Expected image to match or be a close match to snapshot but was 4.1351318359375% different from snapshot (32520 differing pixels).
See diff for details: /home/runner/work/ledger-live-desktop/ledger-live-desktop/tests/specs/__image_snapshots__/__diff_output__/onboarding-restore-start-blue-diff.png

  300 |       await next.click();
  301 |       await app.client.pause(500);
> 302 |       expect(await app.client.screenshot()).toMatchImageSnapshot({
      |                                             ^
  303 |         // wave thing
  304 |         failureThreshold: 15,
  305 |         failureThresholdType: "pixel",

  at Object.<anonymous> (tests/specs/onboarding/flows.js:302:45)

Snapshot Summary
› 21 snapshots failed from 3 test suites. Inspect your code changes or run yarn run spectron -u to update them.

Test Suites: 3 failed, 19 passed, 22 total
Tests: 27 failed, 392 passed, 419 total
Snapshots: 21 failed, 347 passed, 368 total
Time: 1233.747 s
Ran all test suites matching /tests/specs/.*.spec.js/i.
error Command failed with exit code 1.

Diff output ❌

onboarding-blue-flow-blue

onboarding-genuine-check-initialized-device-blue

onboarding-genuine-check-initialized-device-nanoS

onboarding-genuine-check-initialized-device-nanoX

onboarding-initialized-seedwarning-blue

onboarding-initialized-seedwarning-nanoS

onboarding-initialized-seedwarning-nanoX

onboarding-nanoS-flow-nanoS

onboarding-nanoX-flow-nanoX

onboarding-restore-seedwarning-blue

onboarding-restore-seedwarning-nanoS

onboarding-restore-seedwarning-nanoX

onboarding-restore-start-blue

onboarding-restore-start-nanoS

onboarding-restore-start-nanoX

Suggested snapshots to update

Screenshots diff with develop ⚠️

tests/specs/image_snapshots/USBTroubleshooting-mac-noHelpPopup-snap.png

Old New

tests/specs/image_snapshots/__start__appUpdater-snap.png

Old New

tests/specs/image_snapshots/__start__global-accounts-snap.png

Old New

tests/specs/image_snapshots/__start__global-snap.png

Old New

tests/specs/image_snapshots/__start__onboarding-snap.png

Old New

tests/specs/image_snapshots/__start__settings-password-lock-snap.png

Old New

tests/specs/image_snapshots/__start__swap-snap.png

Old New

tests/specs/image_snapshots/__start__usbtroubleshooting-snap.png

Old New

tests/specs/image_snapshots/__start__walletconnect-snap.png

Old New

tests/specs/image_snapshots/app-updater-error-with-carousel-snap.png

Old New

tests/specs/image_snapshots/app-updater-error-without-carousel-snap.png

Old New

tests/specs/image_snapshots/app-updater-idle-snap.png

Old New

tests/specs/image_snapshots/global-collapse-sidebar-snap.png

Old New

tests/specs/image_snapshots/global-discreet-mode-snap.png

Old New

tests/specs/image_snapshots/global-dismiss-carousel-snap.png

Old New

tests/specs/image_snapshots/global-help-drawer-snap.png

Old New

tests/specs/image_snapshots/global-receive-modal-snap.png

Old New

tests/specs/image_snapshots/global-send-modal-snap.png

Old New

tests/specs/image_snapshots/onboarding-blue-flow-blue-snap.png

Old New

tests/specs/image_snapshots/onboarding-check-complete-initialized-device-blue-snap.png

Old New

tests/specs/image_snapshots/onboarding-check-complete-initialized-device-nanoS-snap.png

Old New

tests/specs/image_snapshots/onboarding-check-complete-initialized-device-nanoX-snap.png

Old New

tests/specs/image_snapshots/onboarding-check-complete-quizz-success-cta-blue-snap.png

Old New

tests/specs/image_snapshots/onboarding-check-complete-quizz-success-cta-nanoS-snap.png

Old New

tests/specs/image_snapshots/onboarding-check-complete-quizz-success-cta-nanoX-snap.png

Old New

tests/specs/image_snapshots/onboarding-check-complete-recovery-howto-2-blue-snap.png

Old New

tests/specs/image_snapshots/onboarding-check-complete-recovery-howto-2-nanoS-snap.png

Old New

tests/specs/image_snapshots/onboarding-check-complete-recovery-howto-2-nanoX-snap.png

Old New

tests/specs/image_snapshots/onboarding-genuine-check-initialized-device-blue-snap.png

Old New

tests/specs/image_snapshots/onboarding-genuine-check-initialized-device-nanoS-snap.png

Old New

tests/specs/image_snapshots/onboarding-genuine-check-initialized-device-nanoX-snap.png

Old New

tests/specs/image_snapshots/onboarding-genuine-check-quizz-success-cta-blue-snap.png

Old New

tests/specs/image_snapshots/onboarding-genuine-check-quizz-success-cta-nanoS-snap.png

Old New

tests/specs/image_snapshots/onboarding-genuine-check-quizz-success-cta-nanoX-snap.png

Old New

tests/specs/image_snapshots/onboarding-genuine-check-recovery-howto-2-blue-snap.png

Old New

tests/specs/image_snapshots/onboarding-genuine-check-recovery-howto-2-nanoS-snap.png

Old New

tests/specs/image_snapshots/onboarding-genuine-check-recovery-howto-2-nanoX-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-getstarted-2-blue-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-getstarted-2-nanoS-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-getstarted-2-nanoX-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-getstarted-blue-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-getstarted-nanoS-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-getstarted-nanoX-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-pincode-2-blue-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-pincode-2-nanoS-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-pincode-2-nanoX-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-pincode-blue-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-pincode-nanoS-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-pincode-nanoX-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-quizz-blue-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-quizz-nanoS-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-quizz-nanoX-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-recoveryphrase-2-blue-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-recoveryphrase-2-nanoS-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-recoveryphrase-2-nanoX-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-recoveryphrase-3-blue-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-recoveryphrase-3-nanoS-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-recoveryphrase-3-nanoX-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-recoveryphrase-4-blue-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-recoveryphrase-4-nanoS-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-recoveryphrase-4-nanoX-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-recoveryphrase-blue-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-recoveryphrase-nanoS-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-recoveryphrase-nanoX-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-recoveryphrase-restore-2-blue-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-recoveryphrase-restore-2-nanoS-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-recoveryphrase-restore-2-nanoX-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-recoveryphrase-restore-3-blue-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-recoveryphrase-restore-3-nanoS-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-recoveryphrase-restore-3-nanoX-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-recoveryphrase-restore-blue-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-recoveryphrase-restore-nanoS-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-recoveryphrase-restore-nanoX-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-restore-pincode-2-blue-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-restore-pincode-2-nanoS-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-restore-pincode-2-nanoX-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-restore-pincode-blue-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-restore-pincode-nanoS-snap.png

Old New

tests/specs/image_snapshots/onboarding-nano-restore-pincode-nanoX-snap.png

Old New

tests/specs/image_snapshots/onboarding-nanoS-flow-nanoS-snap.png

Old New

tests/specs/image_snapshots/onboarding-nanoX-flow-nanoX-snap.png

Old New

tests/specs/image_snapshots/onboarding-restore-start-blue-snap.png

Old New

tests/specs/image_snapshots/onboarding-restore-start-nanoS-snap.png

Old New

tests/specs/image_snapshots/onboarding-restore-start-nanoX-snap.png

Old New

tests/specs/image_snapshots/onboarding-restore-step1-blue-snap.png

Old New

tests/specs/image_snapshots/onboarding-restore-step1-nanoS-snap.png

Old New

tests/specs/image_snapshots/onboarding-restore-step1-nanoX-snap.png

Old New

tests/specs/image_snapshots/onboarding-restore-warn-blue-snap.png

Old New

tests/specs/image_snapshots/onboarding-restore-warn-nanoS-snap.png

Old New

tests/specs/image_snapshots/onboarding-restore-warn-nanoX-snap.png

Old New

tests/specs/image_snapshots/onboarding-terms-accepted-blue-snap.png

Old New

tests/specs/image_snapshots/onboarding-terms-accepted-nanoS-snap.png

Old New

tests/specs/image_snapshots/onboarding-terms-accepted-nanoX-snap.png

Old New

tests/specs/image_snapshots/onboarding-terms-blue-snap.png

Old New

tests/specs/image_snapshots/onboarding-terms-nanoS-snap.png

Old New

tests/specs/image_snapshots/onboarding-terms-nanoX-snap.png

Old New

tests/specs/image_snapshots/onboarding-you-are-a-pro-blue-snap.png

Old New

tests/specs/image_snapshots/onboarding-you-are-a-pro-nanoS-snap.png

Old New

tests/specs/image_snapshots/onboarding-you-are-a-pro-nanoX-snap.png

Old New

tests/specs/image_snapshots/swap-access-snap.png

Old New

tests/specs/image_snapshots/swap-end-0-snap.png

Old New

tests/specs/image_snapshots/swap-end-1-snap.png

Old New

tests/specs/image_snapshots/swap-history-modal-snap.png

Old New

tests/specs/image_snapshots/swap-kyc-done-snap.png

Old New

tests/specs/image_snapshots/swap-providers-snap.png

Old New

tests/specs/image_snapshots/swap-rates-snap.png

Old New

tests/specs/image_snapshots/swap-summary-step-snap.png

Old New

tests/specs/image_snapshots/wc-connect-confirmation-snap.png

Old New

tests/specs/image_snapshots/wc-connect-connected-snap.png

Old New

tests/specs/image_snapshots/wc-connect-signmessage-triggered-snap.png

Old New

tests/specs/image_snapshots/wc-connect-transaction-triggered-snap.png

Old New
Old New

Please sign in to comment.