Skip to content

feat: production gaps + real SDK middleware + forex + market data + security hardening #225

feat: production gaps + real SDK middleware + forex + market data + security hardening

feat: production gaps + real SDK middleware + forex + market data + security hardening #225

Triggered via pull request March 2, 2026 12:36
Status Failure
Total duration 4m 24s
Artifacts 1

ci.yml

on: pull_request
Lint & Typecheck (PWA)
37s
Lint & Typecheck (PWA)
Typecheck (Mobile)
52s
Typecheck (Mobile)
Gateway (Go) Build & Test
1m 45s
Gateway (Go) Build & Test
Matching Engine (Rust) Build & Test
1m 14s
Matching Engine (Rust) Build & Test
Ingestion Engine (Python) Tests
14s
Ingestion Engine (Python) Tests
Matrix: Backend Checks
Unit Tests (PWA)
37s
Unit Tests (PWA)
E2E Tests (Playwright)
2m 15s
E2E Tests (Playwright)
Fit to window
Zoom out
Zoom in

Annotations

17 errors, 6 warnings, and 1 notice
Typecheck (Mobile)
Property 'positions' does not exist on type '{}'.
Typecheck (Mobile)
Type '"refresh-cw"' is not assignable to type 'IconName'. Did you mean '"refresh"'?
Typecheck (Mobile)
Type '"git-merge"' is not assignable to type 'IconName'.
Typecheck (Mobile)
Type '"plus-circle"' is not assignable to type 'IconName'.
Typecheck (Mobile)
Type '"tag"' is not assignable to type 'IconName'.
Typecheck (Mobile)
Type '"dollar-sign"' is not assignable to type 'IconName'.
Typecheck (Mobile)
Type '"git-branch"' is not assignable to type 'IconName'.
Typecheck (Mobile)
Type '"radio"' is not assignable to type 'IconName'.
Typecheck (Mobile)
Type '"refresh-cw"' is not assignable to type 'IconName'. Did you mean '"refresh"'?
Typecheck (Mobile)
Type '{ prefixes: string[]; config: { screens: { MainTabs: { screens: { Dashboard: string; Markets: string; Trade: string; Portfolio: string; Account: string; }; }; TradeDetail: string; Notifications: string; }; }; }' is not assignable to type 'LinkingOptions<{ MainTabs: unknown; TradeDetail: unknown; Notifications: unknown; }>'.
E2E Tests (Playwright)
Process completed with exit code 1.
[chromium] › e2e/navigation.spec.ts:34:7 › Navigation › navigates to login page: frontend/pwa/e2e/navigation.spec.ts#L36
2) [chromium] › e2e/navigation.spec.ts:34:7 › Navigation › navigates to login page ─────────────── Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('text=Sign in to NEXCOM Exchange') Expected: visible Timeout: 5000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for locator('text=Sign in to NEXCOM Exchange') 34 | test("navigates to login page", async ({ page }) => { 35 | await page.goto("/login"); > 36 | await expect(page.locator("text=Sign in to NEXCOM Exchange")).toBeVisible(); | ^ 37 | }); 38 | }); 39 | at /home/runner/work/NGApp/NGApp/frontend/pwa/e2e/navigation.spec.ts:36:67
[chromium] › e2e/navigation.spec.ts:34:7 › Navigation › navigates to login page: frontend/pwa/e2e/navigation.spec.ts#L36
2) [chromium] › e2e/navigation.spec.ts:34:7 › Navigation › navigates to login page ─────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('text=Sign in to NEXCOM Exchange') Expected: visible Timeout: 5000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for locator('text=Sign in to NEXCOM Exchange') 34 | test("navigates to login page", async ({ page }) => { 35 | await page.goto("/login"); > 36 | await expect(page.locator("text=Sign in to NEXCOM Exchange")).toBeVisible(); | ^ 37 | }); 38 | }); 39 | at /home/runner/work/NGApp/NGApp/frontend/pwa/e2e/navigation.spec.ts:36:67
[chromium] › e2e/navigation.spec.ts:34:7 › Navigation › navigates to login page: frontend/pwa/e2e/navigation.spec.ts#L36
2) [chromium] › e2e/navigation.spec.ts:34:7 › Navigation › navigates to login page ─────────────── Error: expect(locator).toBeVisible() failed Locator: locator('text=Sign in to NEXCOM Exchange') Expected: visible Timeout: 5000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for locator('text=Sign in to NEXCOM Exchange') 34 | test("navigates to login page", async ({ page }) => { 35 | await page.goto("/login"); > 36 | await expect(page.locator("text=Sign in to NEXCOM Exchange")).toBeVisible(); | ^ 37 | }); 38 | }); 39 | at /home/runner/work/NGApp/NGApp/frontend/pwa/e2e/navigation.spec.ts:36:67
[chromium] › e2e/navigation.spec.ts:4:7 › Navigation › loads dashboard page: frontend/pwa/e2e/navigation.spec.ts#L7
1) [chromium] › e2e/navigation.spec.ts:4:7 › Navigation › loads dashboard page ─────────────────── Retry #2 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('text=Dashboard') Expected: visible Error: strict mode violation: locator('text=Dashboard') resolved to 2 elements: 1) <span class="relative z-10 hidden lg:block">Dashboard</span> aka getByRole('link', { name: 'Dashboard' }) 2) <h1 class="text-2xl font-bold tracking-tight">Dashboard</h1> aka getByRole('heading', { name: 'Dashboard' }) Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for locator('text=Dashboard') 5 | await page.goto("/"); 6 | await expect(page).toHaveTitle(/NEXCOM Exchange/); > 7 | await expect(page.locator("text=Dashboard")).toBeVisible(); | ^ 8 | }); 9 | 10 | test("navigates to trade page", async ({ page }) => { at /home/runner/work/NGApp/NGApp/frontend/pwa/e2e/navigation.spec.ts:7:50
[chromium] › e2e/navigation.spec.ts:4:7 › Navigation › loads dashboard page: frontend/pwa/e2e/navigation.spec.ts#L7
1) [chromium] › e2e/navigation.spec.ts:4:7 › Navigation › loads dashboard page ─────────────────── Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('text=Dashboard') Expected: visible Error: strict mode violation: locator('text=Dashboard') resolved to 2 elements: 1) <span class="relative z-10 hidden lg:block">Dashboard</span> aka getByRole('link', { name: 'Dashboard' }) 2) <h1 class="text-2xl font-bold tracking-tight">Dashboard</h1> aka getByRole('heading', { name: 'Dashboard' }) Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for locator('text=Dashboard') 5 | await page.goto("/"); 6 | await expect(page).toHaveTitle(/NEXCOM Exchange/); > 7 | await expect(page.locator("text=Dashboard")).toBeVisible(); | ^ 8 | }); 9 | 10 | test("navigates to trade page", async ({ page }) => { at /home/runner/work/NGApp/NGApp/frontend/pwa/e2e/navigation.spec.ts:7:50
[chromium] › e2e/navigation.spec.ts:4:7 › Navigation › loads dashboard page: frontend/pwa/e2e/navigation.spec.ts#L7
1) [chromium] › e2e/navigation.spec.ts:4:7 › Navigation › loads dashboard page ─────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('text=Dashboard') Expected: visible Error: strict mode violation: locator('text=Dashboard') resolved to 2 elements: 1) <span class="relative z-10 hidden lg:block">Dashboard</span> aka getByRole('link', { name: 'Dashboard' }) 2) <h1 class="text-2xl font-bold tracking-tight">Dashboard</h1> aka getByRole('heading', { name: 'Dashboard' }) Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for locator('text=Dashboard') 5 | await page.goto("/"); 6 | await expect(page).toHaveTitle(/NEXCOM Exchange/); > 7 | await expect(page.locator("text=Dashboard")).toBeVisible(); | ^ 8 | }); 9 | 10 | test("navigates to trade page", async ({ page }) => { at /home/runner/work/NGApp/NGApp/frontend/pwa/e2e/navigation.spec.ts:7:50
Backend Checks (market-data, go, services/market-data)
Restore cache failed: Dependencies file is not found in /home/runner/work/NGApp/NGApp. Supported file pattern: go.sum
Backend Checks (risk-management, go, services/risk-management)
Restore cache failed: Dependencies file is not found in /home/runner/work/NGApp/NGApp. Supported file pattern: go.sum
Backend Checks (trading-engine, go, services/trading-engine)
Restore cache failed: Dependencies file is not found in /home/runner/work/NGApp/NGApp. Supported file pattern: go.sum
Gateway (Go) Build & Test
Restore cache failed: Dependencies file is not found in /home/runner/work/NGApp/NGApp. Supported file pattern: go.sum
Build (PWA)
No files were found with the provided path: frontend/pwa/.next/. No artifacts will be uploaded.
E2E Tests (Playwright)
No files were found with the provided path: frontend/pwa/playwright-report/. No artifacts will be uploaded.
🎭 Playwright Run Summary
2 failed [chromium] › e2e/navigation.spec.ts:4:7 › Navigation › loads dashboard page ──────────────────── [chromium] › e2e/navigation.spec.ts:34:7 › Navigation › navigates to login page ──────────────── 7 passed (1.4m)

Artifacts

Produced during runtime
Name Size Digest
coverage-report Expired
555 KB
sha256:81d6ea1a1fe7404539e51e15e33d08282bab8ca82a7222d9f25c0889a09b3ca2