Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions apps/app/src/jobs/tasks/integration/integration-results.ts
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,8 @@ export const sendIntegrationResults = schemaTask({
logger.info(`Integration run completed for ${integration.name}`);
return { success: true, totalResults: results.length, results };
} catch (error) {
logger.error(`Error running integration: ${error}`);
const errorMessage = error instanceof Error ? error.message : String(error);
logger.error(`Error running integration: ${errorMessage}`);

// Record the failure using model name that matches the database
try {
Expand All @@ -125,7 +126,7 @@ export const sendIntegrationResults = schemaTask({
status: 'error',
severity: 'ERROR',
resultDetails: {
error: error instanceof Error ? error.message : String(error),
error: errorMessage,
},
integrationId: integration.integration_id,
organizationId: integration.organization.id,
Expand All @@ -135,7 +136,10 @@ export const sendIntegrationResults = schemaTask({
logger.error(`Failed to create error record: ${createError}`);
}

throw error;
return {
success: false,
error: errorMessage,
};
}
},
});
67 changes: 26 additions & 41 deletions apps/app/src/jobs/tasks/integration/run-integration-tests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import { sendIntegrationResults } from './integration-results';

export const runIntegrationTests = task({
id: 'run-integration-tests',
run: async (payload: { organizationId: string; forceFailure?: boolean }) => {
const { organizationId, forceFailure = false } = payload;
run: async (payload: { organizationId: string }) => {
const { organizationId } = payload;

logger.info(`Running integration tests for organization: ${organizationId}`);

Expand Down Expand Up @@ -44,32 +44,6 @@ export const runIntegrationTests = task({
`Found ${integrations.length} integrations to test for organization: ${organizationId}`,
);

if (forceFailure) {
await new Promise((resolve) => setTimeout(resolve, 5000));

const forcedFailureMessage =
'Test failure: intentionally failing integration job for UI verification';

const forcedFailedIntegrations = integrations.map((integration) => ({
id: integration.id,
integrationId: integration.integrationId,
name: integration.name,
error: forcedFailureMessage,
}));

logger.warn(
`Force-failing integration tests for organization ${organizationId}: ${forcedFailureMessage}`,
);

return {
success: false,
organizationId,
integrationsCount: integrations.length,
errors: [forcedFailureMessage],
failedIntegrations: forcedFailedIntegrations,
};
}

const batchItems = integrations.map((integration) => ({
payload: {
integration: {
Expand All @@ -94,21 +68,32 @@ export const runIntegrationTests = task({
}> = [];

batchHandle.runs.forEach((run, index) => {
if (run.ok) {
return;
}

const integration = integrations[index];
const errorValue = run.error;
const errorMessage =
errorValue instanceof Error ? errorValue.message : String(errorValue ?? 'Unknown error');

failedIntegrations.push({
id: integration.id,
integrationId: integration.integrationId,
name: integration.name,
error: errorMessage,
});
if (run.ok) {
// Check if the task completed but returned success: false
const runOutput = run.output as { success?: boolean; error?: string } | undefined;

if (runOutput && runOutput.success === false) {
failedIntegrations.push({
id: integration.id,
integrationId: integration.integrationId,
name: integration.name,
error: runOutput.error || 'Integration failed',
});
}
} else {
// Task crashed or threw an error
const errorMessage =
run.error instanceof Error ? run.error.message : String(run.error ?? 'Unknown error');

failedIntegrations.push({
id: integration.id,
integrationId: integration.integrationId,
name: integration.name,
error: errorMessage,
});
}
});

if (failedIntegrations.length > 0) {
Expand Down
Loading