@arizeai/phoenix-client 6.10.0 → 6.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -0
- package/dist/esm/__generated__/api/v1.d.ts +452 -28
- package/dist/esm/__generated__/api/v1.d.ts.map +1 -1
- package/dist/esm/experiments/helpers/getExampleGlobalId.d.ts +8 -0
- package/dist/esm/experiments/helpers/getExampleGlobalId.d.ts.map +1 -0
- package/dist/esm/experiments/helpers/getExampleGlobalId.js +9 -0
- package/dist/esm/experiments/helpers/getExampleGlobalId.js.map +1 -0
- package/dist/esm/experiments/resumeEvaluation.d.ts.map +1 -1
- package/dist/esm/experiments/resumeEvaluation.js +2 -1
- package/dist/esm/experiments/resumeEvaluation.js.map +1 -1
- package/dist/esm/experiments/resumeExperiment.d.ts.map +1 -1
- package/dist/esm/experiments/resumeExperiment.js +3 -2
- package/dist/esm/experiments/resumeExperiment.js.map +1 -1
- package/dist/esm/experiments/runExperiment.d.ts.map +1 -1
- package/dist/esm/experiments/runExperiment.js +6 -3
- package/dist/esm/experiments/runExperiment.js.map +1 -1
- package/dist/esm/jest/index.d.ts +5 -0
- package/dist/esm/jest/index.d.ts.map +1 -0
- package/dist/esm/jest/index.js +49 -0
- package/dist/esm/jest/index.js.map +1 -0
- package/dist/esm/jest/reporter.d.ts +13 -0
- package/dist/esm/jest/reporter.d.ts.map +1 -0
- package/dist/esm/jest/reporter.js +19 -0
- package/dist/esm/jest/reporter.js.map +1 -0
- package/dist/esm/prompts/sdks/toAI.d.ts +2 -2
- package/dist/esm/prompts/sdks/toAI.d.ts.map +1 -1
- package/dist/esm/prompts/sdks/toAI.js.map +1 -1
- package/dist/esm/prompts/sdks/toAnthropic.d.ts +2 -2
- package/dist/esm/prompts/sdks/toAnthropic.d.ts.map +1 -1
- package/dist/esm/prompts/sdks/toAnthropic.js.map +1 -1
- package/dist/esm/prompts/sdks/toOpenAI.d.ts +2 -2
- package/dist/esm/prompts/sdks/toOpenAI.d.ts.map +1 -1
- package/dist/esm/prompts/sdks/toOpenAI.js.map +1 -1
- package/dist/esm/prompts/sdks/toSDK.d.ts +8 -8
- package/dist/esm/prompts/sdks/toSDK.d.ts.map +1 -1
- package/dist/esm/prompts/sdks/toSDK.js.map +1 -1
- package/dist/esm/prompts/sdks/types.d.ts +2 -2
- package/dist/esm/prompts/sdks/types.d.ts.map +1 -1
- package/dist/esm/schemas/llm/anthropic/converters.d.ts +8 -8
- package/dist/esm/schemas/llm/anthropic/messagePartSchemas.d.ts +4 -4
- package/dist/esm/schemas/llm/anthropic/messageSchemas.d.ts +6 -6
- package/dist/esm/schemas/llm/constants.d.ts +3 -3
- package/dist/esm/schemas/llm/converters.d.ts +12 -12
- package/dist/esm/schemas/llm/openai/converters.d.ts +3 -3
- package/dist/esm/schemas/llm/schemas.d.ts +2 -2
- package/dist/esm/testing/acceptance.d.ts +20 -0
- package/dist/esm/testing/acceptance.d.ts.map +1 -0
- package/dist/esm/testing/acceptance.js +129 -0
- package/dist/esm/testing/acceptance.js.map +1 -0
- package/dist/esm/testing/define-api.d.ts +157 -0
- package/dist/esm/testing/define-api.d.ts.map +1 -0
- package/dist/esm/testing/define-api.js +78 -0
- package/dist/esm/testing/define-api.js.map +1 -0
- package/dist/esm/testing/helpers.d.ts +55 -0
- package/dist/esm/testing/helpers.d.ts.map +1 -0
- package/dist/esm/testing/helpers.js +179 -0
- package/dist/esm/testing/helpers.js.map +1 -0
- package/dist/esm/testing/phoenix-test-tracking.d.ts +68 -0
- package/dist/esm/testing/phoenix-test-tracking.d.ts.map +1 -0
- package/dist/esm/testing/phoenix-test-tracking.js +521 -0
- package/dist/esm/testing/phoenix-test-tracking.js.map +1 -0
- package/dist/esm/testing/report-artifacts.d.ts +45 -0
- package/dist/esm/testing/report-artifacts.d.ts.map +1 -0
- package/dist/esm/testing/report-artifacts.js +218 -0
- package/dist/esm/testing/report-artifacts.js.map +1 -0
- package/dist/esm/testing/report-run.d.ts +22 -0
- package/dist/esm/testing/report-run.d.ts.map +1 -0
- package/dist/esm/testing/report-run.js +41 -0
- package/dist/esm/testing/report-run.js.map +1 -0
- package/dist/esm/testing/reporter-format.d.ts +83 -0
- package/dist/esm/testing/reporter-format.d.ts.map +1 -0
- package/dist/esm/testing/reporter-format.js +852 -0
- package/dist/esm/testing/reporter-format.js.map +1 -0
- package/dist/esm/testing/runner.d.ts +31 -0
- package/dist/esm/testing/runner.d.ts.map +1 -0
- package/dist/esm/testing/runner.js +238 -0
- package/dist/esm/testing/runner.js.map +1 -0
- package/dist/esm/testing/state.d.ts +138 -0
- package/dist/esm/testing/state.d.ts.map +1 -0
- package/dist/esm/testing/state.js +31 -0
- package/dist/esm/testing/state.js.map +1 -0
- package/dist/esm/testing/types.d.ts +319 -0
- package/dist/esm/testing/types.d.ts.map +1 -0
- package/dist/esm/testing/types.js +9 -0
- package/dist/esm/testing/types.js.map +1 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/utils/channel.d.ts +7 -7
- package/dist/esm/utils/channel.d.ts.map +1 -1
- package/dist/esm/utils/channel.js +1 -1
- package/dist/esm/utils/channel.js.map +1 -1
- package/dist/esm/utils/formatPromptMessages.d.ts.map +1 -1
- package/dist/esm/utils/getPromptBySelector.d.ts.map +1 -1
- package/dist/esm/utils/promisifyResult.d.ts +1 -1
- package/dist/esm/utils/promisifyResult.d.ts.map +1 -1
- package/dist/esm/utils/promisifyResult.js.map +1 -1
- package/dist/esm/utils/schemaMatches.d.ts +5 -5
- package/dist/esm/utils/schemaMatches.d.ts.map +1 -1
- package/dist/esm/utils/schemaMatches.js.map +1 -1
- package/dist/esm/vitest/index.d.ts +5 -0
- package/dist/esm/vitest/index.d.ts.map +1 -0
- package/dist/esm/vitest/index.js +15 -0
- package/dist/esm/vitest/index.js.map +1 -0
- package/dist/esm/vitest/reporter.d.ts +19 -0
- package/dist/esm/vitest/reporter.d.ts.map +1 -0
- package/dist/esm/vitest/reporter.js +27 -0
- package/dist/esm/vitest/reporter.js.map +1 -0
- package/dist/src/__generated__/api/v1.d.ts +452 -28
- package/dist/src/__generated__/api/v1.d.ts.map +1 -1
- package/dist/src/experiments/helpers/getExampleGlobalId.d.ts +8 -0
- package/dist/src/experiments/helpers/getExampleGlobalId.d.ts.map +1 -0
- package/dist/src/experiments/helpers/getExampleGlobalId.js +13 -0
- package/dist/src/experiments/helpers/getExampleGlobalId.js.map +1 -0
- package/dist/src/experiments/resumeEvaluation.d.ts.map +1 -1
- package/dist/src/experiments/resumeEvaluation.js +2 -1
- package/dist/src/experiments/resumeEvaluation.js.map +1 -1
- package/dist/src/experiments/resumeExperiment.d.ts.map +1 -1
- package/dist/src/experiments/resumeExperiment.js +3 -2
- package/dist/src/experiments/resumeExperiment.js.map +1 -1
- package/dist/src/experiments/runExperiment.d.ts.map +1 -1
- package/dist/src/experiments/runExperiment.js +6 -3
- package/dist/src/experiments/runExperiment.js.map +1 -1
- package/dist/src/jest/index.d.ts +5 -0
- package/dist/src/jest/index.d.ts.map +1 -0
- package/dist/src/jest/index.js +58 -0
- package/dist/src/jest/index.js.map +1 -0
- package/dist/src/jest/reporter.d.ts +13 -0
- package/dist/src/jest/reporter.d.ts.map +1 -0
- package/dist/src/jest/reporter.js +23 -0
- package/dist/src/jest/reporter.js.map +1 -0
- package/dist/src/prompts/sdks/toAI.d.ts +2 -2
- package/dist/src/prompts/sdks/toAI.d.ts.map +1 -1
- package/dist/src/prompts/sdks/toAI.js.map +1 -1
- package/dist/src/prompts/sdks/toAnthropic.d.ts +2 -2
- package/dist/src/prompts/sdks/toAnthropic.d.ts.map +1 -1
- package/dist/src/prompts/sdks/toAnthropic.js.map +1 -1
- package/dist/src/prompts/sdks/toOpenAI.d.ts +2 -2
- package/dist/src/prompts/sdks/toOpenAI.d.ts.map +1 -1
- package/dist/src/prompts/sdks/toOpenAI.js.map +1 -1
- package/dist/src/prompts/sdks/toSDK.d.ts +8 -8
- package/dist/src/prompts/sdks/toSDK.d.ts.map +1 -1
- package/dist/src/prompts/sdks/toSDK.js.map +1 -1
- package/dist/src/prompts/sdks/types.d.ts +2 -2
- package/dist/src/prompts/sdks/types.d.ts.map +1 -1
- package/dist/src/schemas/llm/anthropic/converters.d.ts +8 -8
- package/dist/src/schemas/llm/anthropic/messagePartSchemas.d.ts +4 -4
- package/dist/src/schemas/llm/anthropic/messageSchemas.d.ts +6 -6
- package/dist/src/schemas/llm/constants.d.ts +3 -3
- package/dist/src/schemas/llm/converters.d.ts +12 -12
- package/dist/src/schemas/llm/openai/converters.d.ts +3 -3
- package/dist/src/schemas/llm/schemas.d.ts +2 -2
- package/dist/src/testing/acceptance.d.ts +20 -0
- package/dist/src/testing/acceptance.d.ts.map +1 -0
- package/dist/src/testing/acceptance.js +114 -0
- package/dist/src/testing/acceptance.js.map +1 -0
- package/dist/src/testing/define-api.d.ts +157 -0
- package/dist/src/testing/define-api.d.ts.map +1 -0
- package/dist/src/testing/define-api.js +81 -0
- package/dist/src/testing/define-api.js.map +1 -0
- package/dist/src/testing/helpers.d.ts +55 -0
- package/dist/src/testing/helpers.d.ts.map +1 -0
- package/dist/src/testing/helpers.js +182 -0
- package/dist/src/testing/helpers.js.map +1 -0
- package/dist/src/testing/phoenix-test-tracking.d.ts +68 -0
- package/dist/src/testing/phoenix-test-tracking.d.ts.map +1 -0
- package/dist/src/testing/phoenix-test-tracking.js +530 -0
- package/dist/src/testing/phoenix-test-tracking.js.map +1 -0
- package/dist/src/testing/report-artifacts.d.ts +45 -0
- package/dist/src/testing/report-artifacts.d.ts.map +1 -0
- package/dist/src/testing/report-artifacts.js +225 -0
- package/dist/src/testing/report-artifacts.js.map +1 -0
- package/dist/src/testing/report-run.d.ts +22 -0
- package/dist/src/testing/report-run.d.ts.map +1 -0
- package/dist/src/testing/report-run.js +47 -0
- package/dist/src/testing/report-run.js.map +1 -0
- package/dist/src/testing/reporter-format.d.ts +83 -0
- package/dist/src/testing/reporter-format.d.ts.map +1 -0
- package/dist/src/testing/reporter-format.js +870 -0
- package/dist/src/testing/reporter-format.js.map +1 -0
- package/dist/src/testing/runner.d.ts +31 -0
- package/dist/src/testing/runner.d.ts.map +1 -0
- package/dist/src/testing/runner.js +258 -0
- package/dist/src/testing/runner.js.map +1 -0
- package/dist/src/testing/state.d.ts +138 -0
- package/dist/src/testing/state.d.ts.map +1 -0
- package/dist/src/testing/state.js +38 -0
- package/dist/src/testing/state.js.map +1 -0
- package/dist/src/testing/types.d.ts +319 -0
- package/dist/src/testing/types.d.ts.map +1 -0
- package/dist/src/testing/types.js +13 -0
- package/dist/src/testing/types.js.map +1 -0
- package/dist/src/utils/channel.d.ts +7 -7
- package/dist/src/utils/channel.d.ts.map +1 -1
- package/dist/src/utils/channel.js +1 -1
- package/dist/src/utils/channel.js.map +1 -1
- package/dist/src/utils/formatPromptMessages.d.ts.map +1 -1
- package/dist/src/utils/getPromptBySelector.d.ts.map +1 -1
- package/dist/src/utils/promisifyResult.d.ts +1 -1
- package/dist/src/utils/promisifyResult.d.ts.map +1 -1
- package/dist/src/utils/promisifyResult.js.map +1 -1
- package/dist/src/utils/schemaMatches.d.ts +5 -5
- package/dist/src/utils/schemaMatches.d.ts.map +1 -1
- package/dist/src/utils/schemaMatches.js.map +1 -1
- package/dist/src/vitest/index.d.ts +5 -0
- package/dist/src/vitest/index.d.ts.map +1 -0
- package/dist/src/vitest/index.js +23 -0
- package/dist/src/vitest/index.js.map +1 -0
- package/dist/src/vitest/reporter.d.ts +19 -0
- package/dist/src/vitest/reporter.d.ts.map +1 -0
- package/dist/src/vitest/reporter.js +34 -0
- package/dist/src/vitest/reporter.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/docs/ci-evals-annotations.mdx +190 -0
- package/docs/ci-evals-jest.mdx +78 -0
- package/docs/ci-evals-vitest.mdx +240 -0
- package/docs/ci-evals.mdx +263 -0
- package/docs/overview.mdx +9 -1
- package/package.json +49 -17
- package/src/__generated__/api/v1.ts +452 -28
- package/src/experiments/helpers/getExampleGlobalId.ts +12 -0
- package/src/experiments/resumeEvaluation.ts +2 -1
- package/src/experiments/resumeExperiment.ts +3 -2
- package/src/experiments/runExperiment.ts +6 -3
- package/src/jest/index.ts +124 -0
- package/src/jest/reporter.ts +22 -0
- package/src/prompts/sdks/toAI.ts +4 -3
- package/src/prompts/sdks/toAnthropic.ts +4 -3
- package/src/prompts/sdks/toOpenAI.ts +4 -3
- package/src/prompts/sdks/toSDK.ts +16 -11
- package/src/prompts/sdks/types.ts +2 -2
- package/src/testing/acceptance.ts +190 -0
- package/src/testing/define-api.ts +279 -0
- package/src/testing/helpers.ts +251 -0
- package/src/testing/phoenix-test-tracking.ts +637 -0
- package/src/testing/report-artifacts.ts +272 -0
- package/src/testing/report-run.ts +44 -0
- package/src/testing/reporter-format.ts +1072 -0
- package/src/testing/runner.ts +350 -0
- package/src/testing/state.ts +165 -0
- package/src/testing/types.ts +366 -0
- package/src/utils/channel.ts +17 -15
- package/src/utils/promisifyResult.ts +6 -4
- package/src/utils/schemaMatches.ts +12 -10
- package/src/vitest/index.ts +57 -0
- package/src/vitest/reporter.ts +32 -0
|
@@ -0,0 +1,530 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isTrackingEnabled = isTrackingEnabled;
|
|
4
|
+
exports.resolveRepetitions = resolveRepetitions;
|
|
5
|
+
exports.initializeSuite = initializeSuite;
|
|
6
|
+
exports.runTaskWithTracing = runTaskWithTracing;
|
|
7
|
+
exports.endTaskSpanForRun = endTaskSpanForRun;
|
|
8
|
+
exports.postExperimentRun = postExperimentRun;
|
|
9
|
+
exports.postAnnotation = postAnnotation;
|
|
10
|
+
exports.runEvaluatorWithTracing = runEvaluatorWithTracing;
|
|
11
|
+
exports.teardownSuite = teardownSuite;
|
|
12
|
+
const phoenix_otel_1 = require("@arizeai/phoenix-otel");
|
|
13
|
+
const datasets_1 = require("../datasets");
|
|
14
|
+
const tracing_1 = require("../experiments/tracing");
|
|
15
|
+
const index_1 = require("../index");
|
|
16
|
+
const ensureString_1 = require("../utils/ensureString");
|
|
17
|
+
const toObjectHeaders_1 = require("../utils/toObjectHeaders");
|
|
18
|
+
const urlUtils_1 = require("../utils/urlUtils");
|
|
19
|
+
const state_1 = require("./state");
|
|
20
|
+
function isFalsyFlag(value) {
|
|
21
|
+
const v = (value !== null && value !== void 0 ? value : "").toLowerCase();
|
|
22
|
+
return v === "false" || v === "0" || v === "off" || v === "no";
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Decide whether tests should sync to Phoenix.
|
|
26
|
+
*
|
|
27
|
+
* Tracing is enabled by default. It can be disabled globally by setting
|
|
28
|
+
* `PHOENIX_TEST_TRACING=false`, or per suite via `SuiteConfig.dryRun`.
|
|
29
|
+
*/
|
|
30
|
+
function isTrackingEnabled(suite) {
|
|
31
|
+
if (isFalsyFlag(process.env.PHOENIX_TEST_TRACING)) {
|
|
32
|
+
return { enabled: false, reason: "PHOENIX_TEST_TRACING is disabled" };
|
|
33
|
+
}
|
|
34
|
+
if (suite === null || suite === void 0 ? void 0 : suite.config.dryRun) {
|
|
35
|
+
return { enabled: false, reason: "suite configured dryRun" };
|
|
36
|
+
}
|
|
37
|
+
return { enabled: true };
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Resolve the repetition count for a test: per-test value, else suite-level,
|
|
41
|
+
* else the `PHOENIX_TEST_REPETITIONS` env var, else `1`. Non-positive or
|
|
42
|
+
* non-finite values fall back to `1`.
|
|
43
|
+
*/
|
|
44
|
+
function resolveRepetitions(perTest, suite) {
|
|
45
|
+
const envValue = Number(process.env.PHOENIX_TEST_REPETITIONS);
|
|
46
|
+
const candidates = [
|
|
47
|
+
perTest,
|
|
48
|
+
suite.config.repetitions,
|
|
49
|
+
Number.isFinite(envValue) ? envValue : undefined,
|
|
50
|
+
];
|
|
51
|
+
for (const c of candidates) {
|
|
52
|
+
if (typeof c === "number" && Number.isFinite(c) && c >= 1) {
|
|
53
|
+
return Math.floor(c);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return 1;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Deterministic key for matching dataset examples by content. Uses sorted
|
|
60
|
+
* keys so two inputs that differ only in property order hash the same.
|
|
61
|
+
*/
|
|
62
|
+
function stableKey(value) {
|
|
63
|
+
return stableStringify(value);
|
|
64
|
+
}
|
|
65
|
+
function stableStringify(value) {
|
|
66
|
+
if (value === null || typeof value !== "object") {
|
|
67
|
+
return JSON.stringify(value);
|
|
68
|
+
}
|
|
69
|
+
if (Array.isArray(value)) {
|
|
70
|
+
return "[" + value.map(stableStringify).join(",") + "]";
|
|
71
|
+
}
|
|
72
|
+
const keys = Object.keys(value).sort();
|
|
73
|
+
return ("{" +
|
|
74
|
+
keys
|
|
75
|
+
.map((k) => JSON.stringify(k) +
|
|
76
|
+
":" +
|
|
77
|
+
stableStringify(value[k]))
|
|
78
|
+
.join(",") +
|
|
79
|
+
"}");
|
|
80
|
+
}
|
|
81
|
+
/** TEXT for raw strings, JSON for everything else. */
|
|
82
|
+
function mimeTypeFor(value) {
|
|
83
|
+
return typeof value === "string" ? phoenix_otel_1.MimeType.TEXT : phoenix_otel_1.MimeType.JSON;
|
|
84
|
+
}
|
|
85
|
+
const taskSpansByRun = new WeakMap();
|
|
86
|
+
/**
|
|
87
|
+
* Warn once when `PHOENIX_HOST` is plain `http:` while an `Authorization`
|
|
88
|
+
* header is being forwarded to the OTLP exporter — that combination
|
|
89
|
+
* exfiltrates the bearer token in cleartext.
|
|
90
|
+
*/
|
|
91
|
+
let warnedAboutHttpScheme = false;
|
|
92
|
+
function maybeWarnHttpScheme(baseUrl, headers) {
|
|
93
|
+
if (warnedAboutHttpScheme || !baseUrl)
|
|
94
|
+
return;
|
|
95
|
+
let parsed;
|
|
96
|
+
try {
|
|
97
|
+
parsed = new URL(baseUrl);
|
|
98
|
+
}
|
|
99
|
+
catch (_a) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
if (parsed.protocol !== "http:")
|
|
103
|
+
return;
|
|
104
|
+
if (parsed.hostname === "localhost" || parsed.hostname === "127.0.0.1")
|
|
105
|
+
return;
|
|
106
|
+
if (!headers)
|
|
107
|
+
return;
|
|
108
|
+
const picked = (0, toObjectHeaders_1.toObjectHeaders)(headers);
|
|
109
|
+
const hasAuth = Object.keys(picked).some((h) => h.toLowerCase() === "authorization");
|
|
110
|
+
if (!hasAuth)
|
|
111
|
+
return;
|
|
112
|
+
warnedAboutHttpScheme = true;
|
|
113
|
+
// eslint-disable-next-line no-console
|
|
114
|
+
console.warn(`[@arizeai/phoenix-client] PHOENIX_HOST="${baseUrl}" uses http:// with ` +
|
|
115
|
+
`an Authorization header set; the bearer token will travel in cleartext. ` +
|
|
116
|
+
`Use https:// for non-localhost Phoenix endpoints.`);
|
|
117
|
+
}
|
|
118
|
+
function buildLinks(client, datasetId, experimentId) {
|
|
119
|
+
const baseUrl = client.config.baseUrl;
|
|
120
|
+
if (!baseUrl)
|
|
121
|
+
return [];
|
|
122
|
+
return [
|
|
123
|
+
{ label: "Dataset", url: (0, urlUtils_1.getDatasetUrl)({ baseUrl, datasetId }) },
|
|
124
|
+
{
|
|
125
|
+
label: "Experiments",
|
|
126
|
+
url: (0, urlUtils_1.getDatasetExperimentsUrl)({ baseUrl, datasetId }),
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
label: "Experiment",
|
|
130
|
+
url: (0, urlUtils_1.getExperimentUrl)({ baseUrl, datasetId, experimentId }),
|
|
131
|
+
},
|
|
132
|
+
];
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Initialize the suite: upload the dataset, create the experiment, and
|
|
136
|
+
* register the OpenInference tracer.
|
|
137
|
+
*
|
|
138
|
+
* If tracing is disabled (no Phoenix env vars, or PHOENIX_TEST_TRACING=false),
|
|
139
|
+
* this populates a no-op tracer and exits without making any network calls.
|
|
140
|
+
*/
|
|
141
|
+
async function initializeSuite(suite) {
|
|
142
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
143
|
+
const tracking = isTrackingEnabled(suite);
|
|
144
|
+
if (!tracking.enabled) {
|
|
145
|
+
suite.trackingDisabled = true;
|
|
146
|
+
suite.trackingDisabledReason = tracking.reason;
|
|
147
|
+
suite.tracer = (0, phoenix_otel_1.createNoOpProvider)().getTracer("no-op");
|
|
148
|
+
suite.evaluatorTracer = suite.tracer;
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
const client = (_a = suite.config.client) !== null && _a !== void 0 ? _a : (0, index_1.createClient)();
|
|
152
|
+
suite.client = client;
|
|
153
|
+
const datasetName = (_b = suite.config.datasetName) !== null && _b !== void 0 ? _b : suite.name;
|
|
154
|
+
const description = (_c = suite.config.description) !== null && _c !== void 0 ? _c : `Phoenix test dataset auto-generated from ${suite.name}`;
|
|
155
|
+
const examples = Array.from(suite.registeredExamples.values()).map((registered) => {
|
|
156
|
+
var _a, _b, _c;
|
|
157
|
+
return ({
|
|
158
|
+
id: (_a = registered.params.id) !== null && _a !== void 0 ? _a : null,
|
|
159
|
+
input: registered.params.input,
|
|
160
|
+
output: (_b = registered.params.expected) !== null && _b !== void 0 ? _b : {},
|
|
161
|
+
metadata: (_c = registered.params.metadata) !== null && _c !== void 0 ? _c : {},
|
|
162
|
+
splits: registered.params.splits,
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
let datasetId;
|
|
166
|
+
try {
|
|
167
|
+
const created = await (0, datasets_1.createDataset)({
|
|
168
|
+
client,
|
|
169
|
+
name: datasetName,
|
|
170
|
+
description,
|
|
171
|
+
examples,
|
|
172
|
+
});
|
|
173
|
+
datasetId = created.datasetId;
|
|
174
|
+
}
|
|
175
|
+
catch (err) {
|
|
176
|
+
suite.trackingDisabled = true;
|
|
177
|
+
suite.setupError = err instanceof Error ? err : new Error(String(err));
|
|
178
|
+
suite.tracer = (0, phoenix_otel_1.createNoOpProvider)().getTracer("no-op");
|
|
179
|
+
suite.evaluatorTracer = suite.tracer;
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
suite.datasetId = datasetId;
|
|
183
|
+
// Map test names to server-side example ids by re-fetching the dataset.
|
|
184
|
+
// The server doesn't promise that the GET response order matches the
|
|
185
|
+
// upload order, so we match by user-supplied `id` first, then by
|
|
186
|
+
// `JSON.stringify(input)` deep-equality with FIFO-on-collision.
|
|
187
|
+
try {
|
|
188
|
+
const { data: response } = await client.GET("/v1/datasets/{id}/examples", {
|
|
189
|
+
params: { path: { id: datasetId } },
|
|
190
|
+
});
|
|
191
|
+
const fetched = (_e = (_d = response === null || response === void 0 ? void 0 : response.data) === null || _d === void 0 ? void 0 : _d.examples) !== null && _e !== void 0 ? _e : [];
|
|
192
|
+
const idToTestName = new Map();
|
|
193
|
+
const inputKeyToTestNames = new Map();
|
|
194
|
+
for (const [testName, registered] of suite.registeredExamples.entries()) {
|
|
195
|
+
if (registered.params.id) {
|
|
196
|
+
idToTestName.set(registered.params.id, testName);
|
|
197
|
+
continue;
|
|
198
|
+
}
|
|
199
|
+
const key = stableKey(registered.params.input);
|
|
200
|
+
const arr = (_f = inputKeyToTestNames.get(key)) !== null && _f !== void 0 ? _f : [];
|
|
201
|
+
arr.push(testName);
|
|
202
|
+
inputKeyToTestNames.set(key, arr);
|
|
203
|
+
}
|
|
204
|
+
for (const ex of fetched) {
|
|
205
|
+
const byId = idToTestName.get(ex.id);
|
|
206
|
+
if (byId) {
|
|
207
|
+
suite.exampleIdsByTest.set(byId, {
|
|
208
|
+
exampleId: ex.id,
|
|
209
|
+
nodeId: ex.node_id,
|
|
210
|
+
});
|
|
211
|
+
idToTestName.delete(ex.id);
|
|
212
|
+
continue;
|
|
213
|
+
}
|
|
214
|
+
const queue = inputKeyToTestNames.get(stableKey(ex.input));
|
|
215
|
+
if (queue && queue.length) {
|
|
216
|
+
const testName = queue.shift();
|
|
217
|
+
suite.exampleIdsByTest.set(testName, {
|
|
218
|
+
exampleId: ex.id,
|
|
219
|
+
nodeId: ex.node_id,
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
catch (_l) {
|
|
225
|
+
// If we cannot resolve example ids, runs will be logged without one.
|
|
226
|
+
}
|
|
227
|
+
const projectName = `${datasetName}-${new Date().toISOString()}`;
|
|
228
|
+
suite.projectName = projectName;
|
|
229
|
+
try {
|
|
230
|
+
const experimentResponse = await client
|
|
231
|
+
.POST("/v1/datasets/{dataset_id}/experiments", {
|
|
232
|
+
params: { path: { dataset_id: datasetId } },
|
|
233
|
+
body: {
|
|
234
|
+
name: (_g = suite.config.datasetName) !== null && _g !== void 0 ? _g : suite.name,
|
|
235
|
+
description,
|
|
236
|
+
metadata: Object.assign(Object.assign({}, ((_h = suite.config.metadata) !== null && _h !== void 0 ? _h : {})), envMetadata()),
|
|
237
|
+
project_name: projectName,
|
|
238
|
+
repetitions: Math.max(1, (_j = suite.maxRepetitions) !== null && _j !== void 0 ? _j : 1),
|
|
239
|
+
},
|
|
240
|
+
})
|
|
241
|
+
.then((res) => { var _a; return (_a = res.data) === null || _a === void 0 ? void 0 : _a.data; });
|
|
242
|
+
if (!experimentResponse) {
|
|
243
|
+
throw new Error("Failed to create experiment");
|
|
244
|
+
}
|
|
245
|
+
suite.experimentId = experimentResponse.id;
|
|
246
|
+
suite.projectName = (_k = experimentResponse.project_name) !== null && _k !== void 0 ? _k : projectName;
|
|
247
|
+
}
|
|
248
|
+
catch (err) {
|
|
249
|
+
suite.trackingDisabled = true;
|
|
250
|
+
suite.setupError = err instanceof Error ? err : new Error(String(err));
|
|
251
|
+
suite.tracer = (0, phoenix_otel_1.createNoOpProvider)().getTracer("no-op");
|
|
252
|
+
suite.evaluatorTracer = suite.tracer;
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
const baseUrl = client.config.baseUrl;
|
|
256
|
+
if (!baseUrl) {
|
|
257
|
+
suite.trackingDisabled = true;
|
|
258
|
+
suite.setupError = new Error("Phoenix base URL not found. Set PHOENIX_HOST or pass baseUrl on the client.");
|
|
259
|
+
suite.tracer = (0, phoenix_otel_1.createNoOpProvider)().getTracer("no-op");
|
|
260
|
+
suite.evaluatorTracer = suite.tracer;
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
maybeWarnHttpScheme(baseUrl, client.config.headers);
|
|
264
|
+
let provider;
|
|
265
|
+
try {
|
|
266
|
+
provider = (0, phoenix_otel_1.register)({
|
|
267
|
+
projectName: suite.projectName,
|
|
268
|
+
url: baseUrl,
|
|
269
|
+
headers: client.config.headers
|
|
270
|
+
? (0, toObjectHeaders_1.toObjectHeaders)(client.config.headers)
|
|
271
|
+
: undefined,
|
|
272
|
+
batch: false,
|
|
273
|
+
global: false,
|
|
274
|
+
});
|
|
275
|
+
suite.tracerProvider = provider;
|
|
276
|
+
suite.globalRegistration = (0, phoenix_otel_1.attachGlobalTracerProvider)(provider);
|
|
277
|
+
}
|
|
278
|
+
catch (err) {
|
|
279
|
+
suite.trackingDisabled = true;
|
|
280
|
+
suite.setupError = err instanceof Error ? err : new Error(String(err));
|
|
281
|
+
suite.tracer = (0, phoenix_otel_1.createNoOpProvider)().getTracer("no-op");
|
|
282
|
+
suite.evaluatorTracer = suite.tracer;
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
suite.tracer = provider.getTracer(suite.projectName);
|
|
286
|
+
suite.evaluatorTracer = provider.getTracer(`${suite.projectName}-evaluators`);
|
|
287
|
+
if (suite.datasetId && suite.experimentId) {
|
|
288
|
+
suite.links = buildLinks(client, suite.datasetId, suite.experimentId);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
/** Lazily-created no-op tracer reused for dry runs / fallbacks. */
|
|
292
|
+
let noOpTracer;
|
|
293
|
+
function getNoOpTracer() {
|
|
294
|
+
if (!noOpTracer)
|
|
295
|
+
noOpTracer = (0, phoenix_otel_1.createNoOpProvider)().getTracer("no-op");
|
|
296
|
+
return noOpTracer;
|
|
297
|
+
}
|
|
298
|
+
/** The tracer to use for the currently-running test — no-op when dry. */
|
|
299
|
+
function taskTracer(suite) {
|
|
300
|
+
var _a, _b;
|
|
301
|
+
if ((_a = (0, state_1.currentRun)()) === null || _a === void 0 ? void 0 : _a.dryRun)
|
|
302
|
+
return getNoOpTracer();
|
|
303
|
+
return (_b = suite.tracer) !== null && _b !== void 0 ? _b : getNoOpTracer();
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Wrap the user's test body in an OpenInference task span and return the
|
|
307
|
+
* trace id so we can submit it with the experiment run.
|
|
308
|
+
*/
|
|
309
|
+
async function runTaskWithTracing(suite, testName, fn) {
|
|
310
|
+
const tracer = taskTracer(suite);
|
|
311
|
+
return tracer.startActiveSpan(`Test: ${testName}`, async (span) => {
|
|
312
|
+
const traceId = span.spanContext().traceId;
|
|
313
|
+
const run = (0, state_1.currentRun)();
|
|
314
|
+
if (run) {
|
|
315
|
+
run.traceId = traceId;
|
|
316
|
+
taskSpansByRun.set(run, { span, traceId, ended: false });
|
|
317
|
+
}
|
|
318
|
+
try {
|
|
319
|
+
const result = await fn();
|
|
320
|
+
if (run) {
|
|
321
|
+
endTaskSpan({ run, fallbackOutput: result });
|
|
322
|
+
}
|
|
323
|
+
else {
|
|
324
|
+
endSpanAsTask({ span, input: undefined, output: result });
|
|
325
|
+
}
|
|
326
|
+
return { traceId, result };
|
|
327
|
+
}
|
|
328
|
+
catch (err) {
|
|
329
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
330
|
+
const isTaskError = run ? !hasTaskSpanEnded(run) : true;
|
|
331
|
+
if (run && isTaskError) {
|
|
332
|
+
endTaskSpan({ run, error });
|
|
333
|
+
}
|
|
334
|
+
else if (!run) {
|
|
335
|
+
span.setStatus({ code: phoenix_otel_1.SpanStatusCode.ERROR, message: error.message });
|
|
336
|
+
span.end();
|
|
337
|
+
}
|
|
338
|
+
return { traceId, error, isTaskError };
|
|
339
|
+
}
|
|
340
|
+
finally {
|
|
341
|
+
if (run) {
|
|
342
|
+
taskSpansByRun.delete(run);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
function hasTaskSpanEnded(run) {
|
|
348
|
+
var _a, _b;
|
|
349
|
+
return (_b = (_a = taskSpansByRun.get(run)) === null || _a === void 0 ? void 0 : _a.ended) !== null && _b !== void 0 ? _b : false;
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* End the current run's task span. `logOutput()` calls this immediately so
|
|
353
|
+
* evaluator work that follows is not included in the task span duration.
|
|
354
|
+
*/
|
|
355
|
+
function endTaskSpanForRun(run) {
|
|
356
|
+
endTaskSpan({ run });
|
|
357
|
+
}
|
|
358
|
+
function endTaskSpan({ run, fallbackOutput, error, }) {
|
|
359
|
+
const lifecycle = taskSpansByRun.get(run);
|
|
360
|
+
if (!lifecycle || lifecycle.ended)
|
|
361
|
+
return;
|
|
362
|
+
const output = run.outputSet ? run.output : fallbackOutput;
|
|
363
|
+
if (error) {
|
|
364
|
+
lifecycle.span.setStatus({
|
|
365
|
+
code: phoenix_otel_1.SpanStatusCode.ERROR,
|
|
366
|
+
message: error.message,
|
|
367
|
+
});
|
|
368
|
+
lifecycle.span.setAttributes({
|
|
369
|
+
[phoenix_otel_1.SemanticConventions.OPENINFERENCE_SPAN_KIND]: phoenix_otel_1.OpenInferenceSpanKind.CHAIN,
|
|
370
|
+
[phoenix_otel_1.SemanticConventions.INPUT_MIME_TYPE]: mimeTypeFor(run.params.input),
|
|
371
|
+
[phoenix_otel_1.SemanticConventions.INPUT_VALUE]: (0, ensureString_1.ensureString)(run.params.input),
|
|
372
|
+
});
|
|
373
|
+
lifecycle.span.end();
|
|
374
|
+
}
|
|
375
|
+
else {
|
|
376
|
+
endSpanAsTask({ span: lifecycle.span, input: run.params.input, output });
|
|
377
|
+
}
|
|
378
|
+
run.traceId = lifecycle.traceId;
|
|
379
|
+
run.taskEndTime = new Date();
|
|
380
|
+
lifecycle.ended = true;
|
|
381
|
+
}
|
|
382
|
+
function endSpanAsTask({ span, input, output, }) {
|
|
383
|
+
span.setAttributes({
|
|
384
|
+
[phoenix_otel_1.SemanticConventions.OPENINFERENCE_SPAN_KIND]: phoenix_otel_1.OpenInferenceSpanKind.CHAIN,
|
|
385
|
+
[phoenix_otel_1.SemanticConventions.INPUT_MIME_TYPE]: mimeTypeFor(input),
|
|
386
|
+
[phoenix_otel_1.SemanticConventions.INPUT_VALUE]: (0, ensureString_1.ensureString)(input),
|
|
387
|
+
[phoenix_otel_1.SemanticConventions.OUTPUT_MIME_TYPE]: mimeTypeFor(output),
|
|
388
|
+
[phoenix_otel_1.SemanticConventions.OUTPUT_VALUE]: (0, ensureString_1.ensureString)(output),
|
|
389
|
+
});
|
|
390
|
+
span.setStatus({ code: phoenix_otel_1.SpanStatusCode.OK });
|
|
391
|
+
span.end();
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* POST a single experiment run for one test case to Phoenix.
|
|
395
|
+
*
|
|
396
|
+
* Best-effort: failures are captured and surfaced via the test reporter but
|
|
397
|
+
* do not fail the test itself.
|
|
398
|
+
*/
|
|
399
|
+
async function postExperimentRun(suite, run) {
|
|
400
|
+
var _a, _b, _c, _d, _e, _f;
|
|
401
|
+
if (run.dryRun ||
|
|
402
|
+
suite.trackingDisabled ||
|
|
403
|
+
!suite.client ||
|
|
404
|
+
!suite.experimentId) {
|
|
405
|
+
return undefined;
|
|
406
|
+
}
|
|
407
|
+
const example = suite.exampleIdsByTest.get(run.logicalName);
|
|
408
|
+
if (!example) {
|
|
409
|
+
return undefined;
|
|
410
|
+
}
|
|
411
|
+
try {
|
|
412
|
+
const res = await suite.client.POST("/v1/experiments/{experiment_id}/runs", {
|
|
413
|
+
params: { path: { experiment_id: suite.experimentId } },
|
|
414
|
+
body: {
|
|
415
|
+
dataset_example_id: example.nodeId,
|
|
416
|
+
output: run.outputSet
|
|
417
|
+
? run.output
|
|
418
|
+
: null,
|
|
419
|
+
repetition_number: run.repetitionNumber,
|
|
420
|
+
start_time: run.startTime.toISOString(),
|
|
421
|
+
end_time: ((_b = (_a = run.taskEndTime) !== null && _a !== void 0 ? _a : run.endTime) !== null && _b !== void 0 ? _b : new Date()).toISOString(),
|
|
422
|
+
error: (_c = run.error) !== null && _c !== void 0 ? _c : null,
|
|
423
|
+
trace_id: (_d = run.traceId) !== null && _d !== void 0 ? _d : null,
|
|
424
|
+
},
|
|
425
|
+
});
|
|
426
|
+
return (_e = res.data) === null || _e === void 0 ? void 0 : _e.data.id;
|
|
427
|
+
}
|
|
428
|
+
catch (_g) {
|
|
429
|
+
suite.uploadFailureCount = ((_f = suite.uploadFailureCount) !== null && _f !== void 0 ? _f : 0) + 1;
|
|
430
|
+
return undefined;
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* POST one annotation (an "experiment_evaluation") for a run.
|
|
435
|
+
*/
|
|
436
|
+
async function postAnnotation(suite, runId, annotation) {
|
|
437
|
+
var _a, _b, _c, _d, _e, _f;
|
|
438
|
+
if (suite.trackingDisabled || !suite.client || !runId)
|
|
439
|
+
return;
|
|
440
|
+
const start = new Date();
|
|
441
|
+
const end = new Date();
|
|
442
|
+
try {
|
|
443
|
+
await suite.client.POST("/v1/experiment_evaluations", {
|
|
444
|
+
body: {
|
|
445
|
+
experiment_run_id: runId,
|
|
446
|
+
name: annotation.name,
|
|
447
|
+
annotator_kind: (_a = annotation.annotatorKind) !== null && _a !== void 0 ? _a : "CODE",
|
|
448
|
+
start_time: start.toISOString(),
|
|
449
|
+
end_time: end.toISOString(),
|
|
450
|
+
result: Object.assign({ score: typeof annotation.score === "boolean"
|
|
451
|
+
? annotation.score
|
|
452
|
+
? 1
|
|
453
|
+
: 0
|
|
454
|
+
: ((_b = annotation.score) !== null && _b !== void 0 ? _b : null), label: (_c = annotation.label) !== null && _c !== void 0 ? _c : null, explanation: (_d = annotation.explanation) !== null && _d !== void 0 ? _d : null }, (annotation.metadata ? { metadata: annotation.metadata } : {})),
|
|
455
|
+
error: null,
|
|
456
|
+
trace_id: (_e = annotation.traceId) !== null && _e !== void 0 ? _e : null,
|
|
457
|
+
},
|
|
458
|
+
});
|
|
459
|
+
}
|
|
460
|
+
catch (_g) {
|
|
461
|
+
suite.uploadFailureCount = ((_f = suite.uploadFailureCount) !== null && _f !== void 0 ? _f : 0) + 1;
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
/** Run an evaluator in an OpenInference evaluator span. */
|
|
465
|
+
async function runEvaluatorWithTracing(suite, name, params, fn) {
|
|
466
|
+
var _a, _b, _c, _d;
|
|
467
|
+
const isDryRun = (_b = (_a = (0, state_1.currentRun)()) === null || _a === void 0 ? void 0 : _a.dryRun) !== null && _b !== void 0 ? _b : false;
|
|
468
|
+
const tracer = isDryRun
|
|
469
|
+
? getNoOpTracer()
|
|
470
|
+
: ((_d = (_c = suite.evaluatorTracer) !== null && _c !== void 0 ? _c : suite.tracer) !== null && _d !== void 0 ? _d : getNoOpTracer());
|
|
471
|
+
const parentlessContext = phoenix_otel_1.trace.deleteSpan(phoenix_otel_1.context.active());
|
|
472
|
+
const evaluatorContext = isDryRun
|
|
473
|
+
? (0, phoenix_otel_1.suppressTracing)(parentlessContext)
|
|
474
|
+
: parentlessContext;
|
|
475
|
+
return phoenix_otel_1.context.with(evaluatorContext, () => tracer.startActiveSpan(`Evaluation: ${name}`, async (span) => {
|
|
476
|
+
const traceId = isDryRun ? null : span.spanContext().traceId;
|
|
477
|
+
try {
|
|
478
|
+
const result = await fn(params);
|
|
479
|
+
span.setAttributes({
|
|
480
|
+
[phoenix_otel_1.SemanticConventions.OPENINFERENCE_SPAN_KIND]: phoenix_otel_1.OpenInferenceSpanKind.EVALUATOR,
|
|
481
|
+
[phoenix_otel_1.SemanticConventions.INPUT_MIME_TYPE]: phoenix_otel_1.MimeType.JSON,
|
|
482
|
+
[phoenix_otel_1.SemanticConventions.INPUT_VALUE]: (0, ensureString_1.ensureString)(params),
|
|
483
|
+
[phoenix_otel_1.SemanticConventions.OUTPUT_MIME_TYPE]: phoenix_otel_1.MimeType.JSON,
|
|
484
|
+
[phoenix_otel_1.SemanticConventions.OUTPUT_VALUE]: (0, ensureString_1.ensureString)(result),
|
|
485
|
+
});
|
|
486
|
+
span.setStatus({ code: phoenix_otel_1.SpanStatusCode.OK });
|
|
487
|
+
return { result, traceId };
|
|
488
|
+
}
|
|
489
|
+
catch (err) {
|
|
490
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
491
|
+
span.setStatus({ code: phoenix_otel_1.SpanStatusCode.ERROR, message: error.message });
|
|
492
|
+
throw error;
|
|
493
|
+
}
|
|
494
|
+
finally {
|
|
495
|
+
span.end();
|
|
496
|
+
}
|
|
497
|
+
}));
|
|
498
|
+
}
|
|
499
|
+
/**
|
|
500
|
+
* Tear down the tracer provider created for the suite, flushing any pending
|
|
501
|
+
* spans before the process exits.
|
|
502
|
+
*/
|
|
503
|
+
async function teardownSuite(suite) {
|
|
504
|
+
const provider = suite.tracerProvider;
|
|
505
|
+
if (!provider)
|
|
506
|
+
return;
|
|
507
|
+
try {
|
|
508
|
+
await (0, tracing_1.cleanupOwnedTracerProvider)({
|
|
509
|
+
provider,
|
|
510
|
+
globalRegistration: suite.globalRegistration,
|
|
511
|
+
});
|
|
512
|
+
}
|
|
513
|
+
finally {
|
|
514
|
+
suite.tracerProvider = undefined;
|
|
515
|
+
suite.globalRegistration = null;
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
/**
|
|
519
|
+
* Snapshot environment-derived metadata recorded on the experiment so users
|
|
520
|
+
* can filter experiments by env in the Phoenix UI.
|
|
521
|
+
*/
|
|
522
|
+
function envMetadata() {
|
|
523
|
+
var _a, _b;
|
|
524
|
+
const out = {};
|
|
525
|
+
const env = (_b = (_a = process.env.PHOENIX_ENVIRONMENT) !== null && _a !== void 0 ? _a : process.env.ENVIRONMENT) !== null && _b !== void 0 ? _b : process.env.NODE_ENV;
|
|
526
|
+
if (env)
|
|
527
|
+
out.environment = env;
|
|
528
|
+
return out;
|
|
529
|
+
}
|
|
530
|
+
//# sourceMappingURL=phoenix-test-tracking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phoenix-test-tracking.js","sourceRoot":"","sources":["../../../src/testing/phoenix-test-tracking.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { SuiteSummary } from "./reporter-format";
|
|
2
|
+
import type { SuiteState } from "./state";
|
|
3
|
+
/**
|
|
4
|
+
* Env var that overrides where suite summary artifacts are written. When unset,
|
|
5
|
+
* a stable per-project subdirectory of the OS temp dir is used (see
|
|
6
|
+
* {@link getSuiteSummaryReportDir}).
|
|
7
|
+
*/
|
|
8
|
+
export declare const PHOENIX_TEST_REPORT_DIR_ENV_VAR = "PHOENIX_TEST_REPORT_DIR";
|
|
9
|
+
/**
|
|
10
|
+
* Resolve the directory where suite summary artifacts are written and read.
|
|
11
|
+
*
|
|
12
|
+
* Honors {@link PHOENIX_TEST_REPORT_DIR_ENV_VAR} when set. Otherwise it derives
|
|
13
|
+
* a directory under the OS temp dir, namespaced by a hash of the current
|
|
14
|
+
* working directory so that concurrent test runs in different projects don't
|
|
15
|
+
* read each other's artifacts.
|
|
16
|
+
*/
|
|
17
|
+
export declare function getSuiteSummaryReportDir(): string;
|
|
18
|
+
/**
|
|
19
|
+
* Delete any artifacts left over from a previous run. The reporter calls this
|
|
20
|
+
* at the start of every run so summaries from an earlier watch-mode invocation
|
|
21
|
+
* don't bleed into the next one.
|
|
22
|
+
*/
|
|
23
|
+
export declare function clearSuiteSummaryArtifacts(): void;
|
|
24
|
+
/**
|
|
25
|
+
* Write one suite's summary to the report directory. Called from each worker
|
|
26
|
+
* when a suite finishes.
|
|
27
|
+
*
|
|
28
|
+
* The file is written to a `.tmp` path first and then atomically renamed into
|
|
29
|
+
* place, so the reader never observes a half-written artifact. Failures are
|
|
30
|
+
* intentionally swallowed — reporting must not break the user's tests.
|
|
31
|
+
*/
|
|
32
|
+
export declare function writeSuiteSummaryArtifact(suite: SuiteState): void;
|
|
33
|
+
/**
|
|
34
|
+
* Read back all suite summaries the workers wrote during this run, sorted by
|
|
35
|
+
* suite name for stable output.
|
|
36
|
+
*
|
|
37
|
+
* @param sinceMs - When provided, only artifacts created at or after this
|
|
38
|
+
* timestamp are returned, so summaries from a previous run that share the
|
|
39
|
+
* report directory are ignored. A one-second slack is allowed to absorb
|
|
40
|
+
* small clock differences between worker processes.
|
|
41
|
+
*/
|
|
42
|
+
export declare function readSuiteSummaryArtifacts({ sinceMs, }?: {
|
|
43
|
+
sinceMs?: number;
|
|
44
|
+
}): SuiteSummary[];
|
|
45
|
+
//# sourceMappingURL=report-artifacts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-artifacts.d.ts","sourceRoot":"","sources":["../../../src/testing/report-artifacts.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,SAAS,CAAC;AAEtD;;;;GAIG;AACH,eAAO,MAAM,+BAA+B,4BAA4B,CAAC;AAazE;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAUjD;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAajD;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAiBjE;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,OAAO,GACR,GAAE;IACD,OAAO,CAAC,EAAE,MAAM,CAAC;CACb,GAAG,YAAY,EAAE,CAoCtB"}
|