Skip to content

feat: add drag-to-rebalance interactive mode for AllocationPieChart (#1466) #818

feat: add drag-to-rebalance interactive mode for AllocationPieChart (#1466)

feat: add drag-to-rebalance interactive mode for AllocationPieChart (#1466) #818

Triggered via pull request July 30, 2026 08:27
Status Failure
Total duration 1m 31s
Artifacts

coverage.yml

on: pull_request
Fit to window
Zoom out
Zoom in

Annotations

10 errors and 1 warning
[0] src/components/PerformanceChart.test.tsx > PerformanceChart > Rendering with known snapshot data > should render chart data points correctly for known input: frontend/src/hooks/queries/useHistoryQuery.ts#L10
Error: No QueryClient set, use QueryClientProvider to set one ❯ useQueryClient node_modules/@tanstack/react-query/src/QueryClientProvider.tsx:18:10 ❯ useBaseQuery node_modules/@tanstack/react-query/src/useBaseQuery.ts:54:17 ❯ useQuery node_modules/@tanstack/react-query/src/useQuery.ts:46:9 ❯ useRebalanceHistory src/hooks/queries/useHistoryQuery.ts:10:12 ❯ PerformanceChart src/components/PerformanceChart.tsx:73:83 ❯ renderWithHooks node_modules/react-dom/cjs/react-dom.development.js:15486:18 ❯ mountIndeterminateComponent node_modules/react-dom/cjs/react-dom.development.js:20103:13 ❯ beginWork node_modules/react-dom/cjs/react-dom.development.js:21626:16 ❯ beginWork$1 node_modules/react-dom/cjs/react-dom.development.js:27465:14 ❯ performUnitOfWork node_modules/react-dom/cjs/react-dom.development.js:26599:12
[0] src/components/NotificationPreferences.test.tsx > NotificationPreferences > calls mutation with correct payload when email preference is toggled: frontend/src/components/NotificationPreferences.test.tsx#L74
AssertionError: expected "post" to be called with arguments: [ …(2) ] Received: 1st post call: @@ -9,10 +9,12 @@ "circuitBreaker": true, "priceMovement": true, "rebalance": true, "riskChange": true, }, + "telegramChatId": "", + "telegramEnabled": false, "userId": "user-1", "webhookEnabled": false, "webhookUrl": "", }, ] Number of calls: 1 Ignored nodes: comments, script, style <html> <head /> <body> <div> <div class="bg-white rounded-xl p-6 shadow-sm" > <div class="flex items-center justify-between mb-6" > <div class="flex items-center" > <svg class="w-6 h-6 text-blue-600 mr-2" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg" > <path d="M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9" /> <path d="M10.3 21a1.94 1.94 0 0 0 3.4 0" /> </svg> <h2 class="text-xl font-semibold text-gray-900" > Notifications </h2> </div> </div> <div aria-live="polite" class="mb-4 p-3 bg-green-50 border border-green-200 rounded-lg flex items-center text-green-800" role="status" style="opacity: 1; transform: none;" > <svg class="w-5 h-5 mr-2 flex-shrink-0" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg" > <path d="M22 11.08V12a10 10 0 1 1-5.93-9.14" /> <polyline points="22 4 12 14.01 9 11.01" /> </svg> <span class="text-sm" > Preferences saved successfully </span> </div> <div class="mb-6 p-4 border border-gray-200 rounded-lg bg-gray-50" > <div class="flex items-center mb-2" > <svg class="w-5 h-5 text-gray-600 mr-2" fill="none" height="24" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg" > <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" /> <polyline points="7 10 12 15 17 10" /> <line x1="12" x2="12" y1="15" y2="3" /> </svg> <span class="font-medium text-gray-900" > Export your data </span> </div> <p class="text-sm text-gray-600 mb-3" > Download your portfolio data and rebalance history (GDPR right-to-data). </p> <p class="text-sm text-gray-500" > Connect your wallet and open a portfolio to export from the Overview tab. </p> </div> <div class="space-y-6 mb-6" > <div class="border border-gray-200 rounded-lg p-4" > <div class="flex items-center justify-between mb-2" > <div class="flex items-center" > <svg
[0] src/components/NetworkMismatchBanner.test.tsx: frontend/src/components/NetworkMismatchBanner.tsx#L3
Error: [vitest] There was an error when mocking a module. If you are using "vi.mock" factory, make sure there are no top level variables inside, since this call is hoisted to top of the file. Read more: https://vitest.dev/api/vi.html#vi-mock ❯ src/components/NetworkMismatchBanner.tsx:3:1 Caused by: Caused by: Error: Transform failed with 1 error: [PARSE_ERROR] Unexpected token ╭─[ src/utils/walletAdapters.ts:220:5 ] │ 220 │ } │ ┬ │ ╰── ─────╯ Plugin: vite:oxc File: /home/runner/work/stellar-portfolio-rebalancer/stellar-portfolio-rebalancer/frontend/src/utils/walletAdapters.ts ❯ transformWithOxc node_modules/vitest/node_modules/vite/dist/node/chunks/node.js:4033:19 ❯ TransformPluginContext.transform node_modules/vitest/node_modules/vite/dist/node/chunks/node.js:4104:26 ❯ EnvironmentPluginContainer.transform node_modules/vitest/node_modules/vite/dist/node/chunks/node.js:30201:51 ❯ loadAndTransform node_modules/vitest/node_modules/vite/dist/node/chunks/node.js:20124:26 ❯ fetchModule node_modules/vitest/node_modules/vite/dist/node/chunks/node.js:33584:15
[0] src/components/Dashboard.test.tsx > Dashboard > renders error fallback when portfolio fetching throws: frontend/src/components/Dashboard.test.tsx#L138
Error: [vitest] No "QueryClient" export is defined on the "@tanstack/react-query" mock. Did you forget to return it from "vi.mock"? If you need to partially mock a module, you can use "importOriginal" helper inside: vi.mock(import("@tanstack/react-query"), async (importOriginal) => { const actual = await importOriginal() return { ...actual, // your mocked methods } }) ❯ renderDashboard src/components/Dashboard.test.tsx:138:24 ❯ src/components/Dashboard.test.tsx:334:9
[0] src/components/Dashboard.test.tsx > Dashboard > opens rebalance preview before confirming manual rebalance: frontend/src/components/Dashboard.test.tsx#L138
Error: [vitest] No "QueryClient" export is defined on the "@tanstack/react-query" mock. Did you forget to return it from "vi.mock"? If you need to partially mock a module, you can use "importOriginal" helper inside: vi.mock(import("@tanstack/react-query"), async (importOriginal) => { const actual = await importOriginal() return { ...actual, // your mocked methods } }) ❯ renderDashboard src/components/Dashboard.test.tsx:138:24 ❯ src/components/Dashboard.test.tsx:319:9
[0] src/components/Dashboard.test.tsx > Dashboard > renders loading state while portfolio data is fetching: frontend/src/components/Dashboard.test.tsx#L9
Error: [vitest] No "QueryClient" export is defined on the "@tanstack/react-query" mock. Did you forget to return it from "vi.mock"? If you need to partially mock a module, you can use "importOriginal" helper inside: vi.mock(import("@tanstack/react-query"), async (importOriginal) => { const actual = await importOriginal() return { ...actual, // your mocked methods } }) ❯ renderWithClient src/components/Dashboard.test.tsx:9:29 ❯ src/components/Dashboard.test.tsx:262:9
[0] src/components/Dashboard.test.tsx > Dashboard > renders the day-change with AA-compliant green tokens (not text-green-500 on white): frontend/src/components/Dashboard.test.tsx#L9
Error: [vitest] No "QueryClient" export is defined on the "@tanstack/react-query" mock. Did you forget to return it from "vi.mock"? If you need to partially mock a module, you can use "importOriginal" helper inside: vi.mock(import("@tanstack/react-query"), async (importOriginal) => { const actual = await importOriginal() return { ...actual, // your mocked methods } }) ❯ renderWithClient src/components/Dashboard.test.tsx:9:29 ❯ src/components/Dashboard.test.tsx:249:9
[0] src/components/Dashboard.test.tsx > Dashboard > renders asset cards when portfolio data is populated: frontend/src/components/Dashboard.test.tsx#L9
Error: [vitest] No "QueryClient" export is defined on the "@tanstack/react-query" mock. Did you forget to return it from "vi.mock"? If you need to partially mock a module, you can use "importOriginal" helper inside: vi.mock(import("@tanstack/react-query"), async (importOriginal) => { const actual = await importOriginal() return { ...actual, // your mocked methods } }) ❯ renderWithClient src/components/Dashboard.test.tsx:9:29 ❯ src/components/Dashboard.test.tsx:232:9
[0] src/components/Dashboard.test.tsx > Dashboard > offers clone as new when a saved portfolio is loaded: frontend/src/components/Dashboard.test.tsx#L138
Error: [vitest] No "QueryClient" export is defined on the "@tanstack/react-query" mock. Did you forget to return it from "vi.mock"? If you need to partially mock a module, you can use "importOriginal" helper inside: vi.mock(import("@tanstack/react-query"), async (importOriginal) => { const actual = await importOriginal() return { ...actual, // your mocked methods } }) ❯ renderDashboard src/components/Dashboard.test.tsx:138:24 ❯ src/components/Dashboard.test.tsx:203:9
[0] src/components/Dashboard.test.tsx > Dashboard > renders onboarding CTA for an empty portfolio: frontend/src/components/Dashboard.test.tsx#L9
Error: [vitest] No "QueryClient" export is defined on the "@tanstack/react-query" mock. Did you forget to return it from "vi.mock"? If you need to partially mock a module, you can use "importOriginal" helper inside: vi.mock(import("@tanstack/react-query"), async (importOriginal) => { const actual = await importOriginal() return { ...actual, // your mocked methods } }) ❯ renderWithClient src/components/Dashboard.test.tsx:9:29 ❯ src/components/Dashboard.test.tsx:158:9
coverage
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/checkout@v4, actions/setup-node@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/