UNPKG

@gentrace/core

Version:
1 lines 10.7 kB
{"version":3,"file":"runners.mjs","sources":["runners.js"],"sourcesContent":["var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { globalGentraceApi } from \"./init\";\nimport { constructSubmissionPayloadAdvanced, } from \"./test-result\";\nimport { constructStepRuns, isTestCaseOrTestCaseV2, } from \"./utils\";\n/**\n * Retrieves test runners for a given pipeline\n * @async\n * @param {Pipeline<{ [key: string]: GentracePlugin<any, any> }>} pipeline - The pipeline instance\n * @param {string} [datasetId] - Optional dataset ID to filter test cases by.\n * @throws {Error} Throws an error if the SDK is not initialized. Call init() first.\n * @returns {Promise<Array<PipelineRunDataTuple>>} A Promise that resolves with an array of PipelineRunDataTuple.\n */\nexport const getTestRunners = (pipeline, datasetId, caseFilter) => __awaiter(void 0, void 0, void 0, function* () {\n var _a;\n if (!globalGentraceApi) {\n throw new Error(\"Gentrace API key not initialized. Call init() first.\");\n }\n if (!pipeline) {\n throw new Error(`Invalid pipeline found`);\n }\n // get test cases for the pipeline\n let response;\n if (datasetId) {\n response = yield globalGentraceApi.v1TestCaseGet(datasetId, undefined, undefined);\n }\n else if (pipeline.id) {\n response = yield globalGentraceApi.v1TestCaseGet(undefined, pipeline.id, undefined);\n }\n else {\n response = yield globalGentraceApi.v1TestCaseGet(undefined, undefined, pipeline.slug);\n }\n const testCases = (_a = response.data.testCases) !== null && _a !== void 0 ? _a : [];\n // create tuples of pipeline run and test case\n const testRunners = [];\n for (const testCase of testCases) {\n if (caseFilter && !caseFilter(testCase)) {\n continue;\n }\n const pipelineRun = pipeline.start();\n testRunners.push([pipelineRun, testCase]);\n }\n return testRunners;\n});\n/**\n * Submits test runners for a given pipeline\n * @async\n * @param {Pipeline<{ [key: string]: GentracePlugin<any, any> }>} pipeline - The pipeline instance\n * @param {Array<PipelineRunTestCaseTuple>} pipelineRunTestCases - an array of PipelineRunTestCaseTuple\n * @param {SubmitTestRunnersOptions} [options] - Optional configuration for submitting test runners\n * @returns {Promise<V1TestResultPost200Response>} A Promise that resolves with the response from the Gentrace API\n */\nexport function submitTestRunners(pipeline, pipelineRunTestCases, options = {}) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const { context, caseFilter, triggerRemoteEvals } = options;\n try {\n if (!pipeline) {\n throw new Error(`Invalid pipeline found`);\n }\n const testRuns = [];\n for (const [pipelineRun, testCase] of pipelineRunTestCases) {\n if (isTestCaseOrTestCaseV2(testCase) &&\n caseFilter &&\n !caseFilter(testCase)) {\n continue;\n }\n const testRun = constructStepRuns(testCase, pipelineRun);\n testRuns.push(testRun);\n }\n if (!globalGentraceApi) {\n throw new Error(\"Gentrace API key not initialized. Call init() first.\");\n }\n const body = constructSubmissionPayloadAdvanced((_a = pipeline.id) !== null && _a !== void 0 ? _a : pipeline.slug, testRuns, context, triggerRemoteEvals);\n const response = yield globalGentraceApi.v1TestResultPost(body);\n return response.data;\n }\n catch (e) {\n throw e;\n }\n });\n}\n/**\n * Updates a test result with the provided runners.\n *\n * @async\n * @param {string} resultId - The ID of the test result to update.\n * @param {Array<PipelineRunTestCaseTuple>} runners - Additional test runs to add to the existing test result.\n * @returns {Promise<any>} A Promise that resolves with the response data from the Gentrace API.\n * @throws {Error} Throws an error if the update operation fails.\n */\nexport function updateTestResultWithRunners(resultId, runners) {\n return __awaiter(this, void 0, void 0, function* () {\n const testRuns = [];\n for (const [pipelineRun, testCase] of runners) {\n const testRun = constructStepRuns(testCase, pipelineRun);\n testRuns.push(testRun);\n }\n const response = yield globalGentraceApi.v1TestResultIdPost(resultId, {\n testRuns,\n });\n return response.data;\n });\n}\n/**\n * Creates test runners for a given pipeline using locally provided test data\n * @param {Pipeline<{ [key: string]: GentracePlugin<any, any> }>} pipeline - The pipeline instance\n * @param {LocalTestData[]} localData - Array of local test data objects\n * @returns {Array<PipelineRunLocalDataTuple>} An array of PipelineRunTestCaseTuple\n */\nexport function createTestRunners(pipeline, localData) {\n if (!pipeline) {\n throw new Error(`Invalid pipeline found`);\n }\n const testRunners = [];\n for (const data of localData) {\n const pipelineRun = pipeline.start();\n const testCase = {\n name: data.name,\n inputs: data.inputs,\n expectedOutputs: data.expectedOutputs,\n };\n testRunners.push([pipelineRun, testCase]);\n }\n return testRunners;\n}\n"],"names":["this"],"mappings":";;;;AAAA,IAAI,SAAS,GAAG,CAACA,SAAI,IAAIA,SAAI,CAAC,SAAS,KAAK,UAAU,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;AACzF,IAAI,SAAS,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAChH,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;AAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;AACtH,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,KAAK,CAAC,CAAC;AACP,CAAC,CAAC;AAIF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,cAAc,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,KAAK,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,aAAa;AAClH,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC5B,QAAQ,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;AAChF,KAAK;AACL,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAClD,KAAK;AACL;AACA,IAAI,IAAI,QAAQ,CAAC;AACjB,IAAI,IAAI,SAAS,EAAE;AACnB,QAAQ,QAAQ,GAAG,MAAM,iBAAiB,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAC1F,KAAK;AACL,SAAS,IAAI,QAAQ,CAAC,EAAE,EAAE;AAC1B,QAAQ,QAAQ,GAAG,MAAM,iBAAiB,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AAC5F,KAAK;AACL,SAAS;AACT,QAAQ,QAAQ,GAAG,MAAM,iBAAiB,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC9F,KAAK;AACL,IAAI,MAAM,SAAS,GAAG,CAAC,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AACzF;AACA,IAAI,MAAM,WAAW,GAAG,EAAE,CAAC;AAC3B,IAAI,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;AACtC,QAAQ,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AACjD,YAAY,SAAS;AACrB,SAAS;AACT,QAAQ,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;AAC7C,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,OAAO,WAAW,CAAC;AACvB,CAAC,EAAE;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iBAAiB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,OAAO,GAAG,EAAE,EAAE;AAChF,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,aAAa;AACxD,QAAQ,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC;AACpE,QAAQ,IAAI;AACZ,YAAY,IAAI,CAAC,QAAQ,EAAE;AAC3B,gBAAgB,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAC1D,aAAa;AACb,YAAY,MAAM,QAAQ,GAAG,EAAE,CAAC;AAChC,YAAY,KAAK,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,oBAAoB,EAAE;AACxE,gBAAgB,IAAI,sBAAsB,CAAC,QAAQ,CAAC;AACpD,oBAAoB,UAAU;AAC9B,oBAAoB,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AAC3C,oBAAoB,SAAS;AAC7B,iBAAiB;AACjB,gBAAgB,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AACzE,gBAAgB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvC,aAAa;AACb,YAAY,IAAI,CAAC,iBAAiB,EAAE;AACpC,gBAAgB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;AACxF,aAAa;AACb,YAAY,MAAM,IAAI,GAAG,kCAAkC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;AACtK,YAAY,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC5E,YAAY,OAAO,QAAQ,CAAC,IAAI,CAAC;AACjC,SAAS;AACT,QAAQ,OAAO,CAAC,EAAE;AAClB,YAAY,MAAM,CAAC,CAAC;AACpB,SAAS;AACT,KAAK,CAAC,CAAC;AACP,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,2BAA2B,CAAC,QAAQ,EAAE,OAAO,EAAE;AAC/D,IAAI,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,aAAa;AACxD,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC;AAC5B,QAAQ,KAAK,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,IAAI,OAAO,EAAE;AACvD,YAAY,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AACrE,YAAY,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnC,SAAS;AACT,QAAQ,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,kBAAkB,CAAC,QAAQ,EAAE;AAC9E,YAAY,QAAQ;AACpB,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,QAAQ,CAAC,IAAI,CAAC;AAC7B,KAAK,CAAC,CAAC;AACP,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,iBAAiB,CAAC,QAAQ,EAAE,SAAS,EAAE;AACvD,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,MAAM,WAAW,GAAG,EAAE,CAAC;AAC3B,IAAI,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE;AAClC,QAAQ,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;AAC7C,QAAQ,MAAM,QAAQ,GAAG;AACzB,YAAY,IAAI,EAAE,IAAI,CAAC,IAAI;AAC3B,YAAY,MAAM,EAAE,IAAI,CAAC,MAAM;AAC/B,YAAY,eAAe,EAAE,IAAI,CAAC,eAAe;AACjD,SAAS,CAAC;AACV,QAAQ,WAAW,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;AAClD,KAAK;AACL,IAAI,OAAO,WAAW,CAAC;AACvB;;;;"}