Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Write or update Swap E2E tests for Ledger Live Desktop (Playwright) and Mobile (Detox). Use for swap spec updates, provider flows, multi-step approvals, page-object refactors, swap-history checks, KYC/validation banners, and review-driven cleanup.
.claude/skills/ledgerhq-e2e-swap/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 40% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 10% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -15% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -15% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 60% | 0% |
e2e/desktop or e2e/mobile.e2e/desktop/tests/specs/*swap*.spec.tse2e/desktop/tests/utils/swapUtils.tse2e/desktop/tests/page/swap.page.tse2e/desktop/tests/page/drawer/swap.confirmation.drawer.tse2e/mobile/specs/swap/otherTestCases/swap.other.tse2e/mobile/specs/swap/**/*.spec.tse2e/mobile/page/liveApps/swapLiveApp.tse2e/mobile/page/trade/swap.page.tsWebViewAppPage.getWebView() using webviewIdentifier title matching, not fixed electronApp.windows()[N] indexes.SwapPage methods usually receive electronApp.SwapConfirmationDrawer methods act on the main window.selectSpecificProvider(...) before adding new variants.if/else in @Step methods over early return branches for readability and reporting consistency.replaceAll() over regex-based replace() where equivalent.!); prefer type-safe narrowing/guards.app.swap.getMinimumAmount(...) (desktop)app.swapLiveApp.getMinimumAmount(...) (mobile)check*).SwapPage, prefer const webview = await this.getWebView() for swap webview context.Do not pass electronApp unless a method explicitly needs non-webview Electron windows/events.
performSwapUntilQuoteSelectionStep(...)app.swap.selectSpecificProvider(Provider.CHANGELLY, electronApp)const amountToSend = await app.swap.getAmountToSend(electronApp) (only when needed by follow-up assertions)checkBannerVisibility(...) (removed)verifyContinueButtonVisible() in desktop swap page (removed)selectProviderQuoteWithRetry(...) in swap utils (removed)tapExecuteSwap()tapExecuteSwapOnStepApproval() (includes post-click wait to send summary)tapSwapOnMultiStepApproval()unless there is a proven regression and a documented reason.
app.swap.checkSwapHistoryFeedbackFormUrl(expectedUrl)value on iOS, label on Android).networkFeesInfoIcon, rateInfoIcon).Run validation for the impacted E2E package(s), not the whole monorepo:
pnpm --filter ledger-live-desktop-e2e-tests typecheckpnpm --filter ledger-live-mobile-e2e-tests typecheckValidation workflow notes:
If unrelated pre-existing failures appear, explicitly report them as pre-existing and keep scope focused on swap changes.
For each comment:
rg for symbol usage).Other measured skills in the registry, with their headline benchmark lift.