From a27b3bab8cb4d01c3516db583f9963955cb57164 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 29 Oct 2025 12:57:49 -0400 Subject: [PATCH 1/2] fix(cloud-tests): display integration scan errors in UI (#1698) Fixes #1695 Co-authored-by: Alex Alaniz <88956822+Alex-Alaniz@users.noreply.github.com> --- .../tasks/integration/integration-results.ts | 5 +--- .../integration/run-integration-tests.ts | 27 ++++++++++++------- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/apps/app/src/jobs/tasks/integration/integration-results.ts b/apps/app/src/jobs/tasks/integration/integration-results.ts index 6a1b17c31..84cfc0409 100644 --- a/apps/app/src/jobs/tasks/integration/integration-results.ts +++ b/apps/app/src/jobs/tasks/integration/integration-results.ts @@ -135,10 +135,7 @@ export const sendIntegrationResults = schemaTask({ logger.error(`Failed to create error record: ${createError}`); } - return { - success: false, - error: error instanceof Error ? error.message : String(error), - }; + throw error; } }, }); diff --git a/apps/app/src/jobs/tasks/integration/run-integration-tests.ts b/apps/app/src/jobs/tasks/integration/run-integration-tests.ts index 705eb4798..989061546 100644 --- a/apps/app/src/jobs/tasks/integration/run-integration-tests.ts +++ b/apps/app/src/jobs/tasks/integration/run-integration-tests.ts @@ -57,9 +57,24 @@ export const runIntegrationTests = task({ try { const batchHandle = await sendIntegrationResults.batchTriggerAndWait(batchItems); - + + // Check if any child runs failed + const failedRuns = batchHandle.runs.filter((run) => !run.ok); + + if (failedRuns.length > 0) { + const errorMessages = failedRuns + .map((run) => { + const errorMsg = run.error instanceof Error ? run.error.message : String(run.error); + return errorMsg; + }) + .join('; '); + + logger.error(`Integration tests failed for organization ${organizationId}: ${errorMessages}`); + throw new Error(errorMessages); + } + logger.info(`Successfully completed batch integration tests for organization: ${organizationId}`); - + return { success: true, organizationId, @@ -68,13 +83,7 @@ export const runIntegrationTests = task({ }; } catch (error) { logger.error(`Failed to run integration tests for organization ${organizationId}: ${error}`); - - return { - success: false, - error: error instanceof Error ? error.message : String(error), - organizationId, - integrationsCount: integrations.length, - }; + throw error; } }, }); From a9bbb3f71739d75b09b7126930ee60dfc49bad89 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 29 Oct 2025 13:40:42 -0400 Subject: [PATCH 2/2] chore(analytics): add @vercel/analytics integration to the app (#1700) Co-authored-by: Mariano Fuentes --- apps/app/package.json | 1 + apps/app/src/app/layout.tsx | 2 ++ bun.lock | 3 +++ 3 files changed, 6 insertions(+) diff --git a/apps/app/package.json b/apps/app/package.json index a79da837f..5d795da36 100644 --- a/apps/app/package.json +++ b/apps/app/package.json @@ -58,6 +58,7 @@ "@types/three": "^0.180.0", "@uploadthing/react": "^7.3.0", "@upstash/ratelimit": "^2.0.5", + "@vercel/analytics": "^1.5.0", "@vercel/sandbox": "^0.0.21", "@vercel/sdk": "^1.7.1", "ai": "^5.0.60", diff --git a/apps/app/src/app/layout.tsx b/apps/app/src/app/layout.tsx index 8040e5d58..09a28980a 100644 --- a/apps/app/src/app/layout.tsx +++ b/apps/app/src/app/layout.tsx @@ -6,6 +6,7 @@ import { env } from '@/env.mjs'; import { auth } from '@/utils/auth'; import { cn } from '@comp/ui/cn'; import { Analytics as DubAnalytics } from '@dub/analytics/react'; +import { Analytics as VercelAnalytics } from '@vercel/analytics/next'; import { GeistMono } from 'geist/font/mono'; import type { Metadata } from 'next'; import localFont from 'next/font/local'; @@ -112,6 +113,7 @@ export default async function Layout({ children }: { children: React.ReactNode } + ); diff --git a/bun.lock b/bun.lock index 2ffcd6776..f5d29de18 100644 --- a/bun.lock +++ b/bun.lock @@ -173,6 +173,7 @@ "@types/three": "^0.180.0", "@uploadthing/react": "^7.3.0", "@upstash/ratelimit": "^2.0.5", + "@vercel/analytics": "^1.5.0", "@vercel/sandbox": "^0.0.21", "@vercel/sdk": "^1.7.1", "ai": "^5.0.60", @@ -2233,6 +2234,8 @@ "@use-gesture/react": ["@use-gesture/react@10.3.1", "", { "dependencies": { "@use-gesture/core": "10.3.1" }, "peerDependencies": { "react": ">= 16.8.0" } }, "sha512-Yy19y6O2GJq8f7CHf7L0nxL8bf4PZCPaVOCgJrusOeFHY1LvHgYXnmnXg6N5iwAnbgbZCDjo60SiM6IPJi9C5g=="], + "@vercel/analytics": ["@vercel/analytics@1.5.0", "", { "peerDependencies": { "@remix-run/react": "^2", "@sveltejs/kit": "^1 || ^2", "next": ">= 13", "react": "^18 || ^19 || ^19.0.0-rc", "svelte": ">= 4", "vue": "^3", "vue-router": "^4" }, "optionalPeers": ["@remix-run/react", "@sveltejs/kit", "next", "react", "svelte", "vue", "vue-router"] }, "sha512-MYsBzfPki4gthY5HnYN7jgInhAZ7Ac1cYDoRWFomwGHWEX7odTEzbtg9kf/QSo7XEsEAqlQugA6gJ2WS2DEa3g=="], + "@vercel/oidc": ["@vercel/oidc@2.0.2", "", { "dependencies": { "@types/ms": "2.1.0", "ms": "2.1.3" } }, "sha512-59PBFx3T+k5hLTEWa3ggiMpGRz1OVvl9eN8SUai+A43IsqiOuAe7qPBf+cray/Fj6mkgnxm/D7IAtjc8zSHi7g=="], "@vercel/sandbox": ["@vercel/sandbox@0.0.21", "", { "dependencies": { "@vercel/oidc": "^2.0.2", "async-retry": "1.3.3", "jsonlines": "0.1.1", "ms": "2.1.3", "tar-stream": "3.1.7", "undici": "^7.16.0", "zod": "3.24.4" } }, "sha512-j6nAUQyuw6znVaZGd7yI0nab1EWhEtIZPnTXvpDatJ2SObodYZOz5hGoLjCopAuhQBC7vOngbZ1bwP6HxtB5+g=="],