Skip to content

Commit 41721e6

Browse files
nirgaclaude
andcommitted
feat: add comprehensive image generation tests and fix CI issues
- Add complete test coverage for image generation, editing, and variation - Fix Buffer/File format issues in tests using proper File objects - Remove problematic postinstall script that caused CI failures - Tests now verify span creation, attributes, and token calculation - Support for different quality levels (low/medium/high) validation 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 4ceccf2 commit 41721e6

File tree

14 files changed

+1153
-298
lines changed
  • packages/instrumentation-openai
    • recordings/Test-OpenAI-instrumentation_1770406427
      • should-calculate-correct-tokens-for-different-quality-levels_3292443992
      • should-emit-logprobs-span-event-for-chat-completion_1028826680
      • should-emit-logprobs-span-event-for-stream-chat-completion_2713905208
      • should-set-attributes-in-span-for-chat_1427850401
      • should-set-attributes-in-span-for-completion_322013537
      • should-set-attributes-in-span-for-function-calling_1703714575
      • should-set-attributes-in-span-for-image-editing_4216676336
      • should-set-attributes-in-span-for-image-variation_2237177737
      • should-set-attributes-in-span-for-streaming-chat_72904453
      • should-set-attributes-in-span-for-streaming-completion_1484001317
      • should-set-attributes-in-span-for-tool-calling_1747151373
      • should-set-function_call-attributes-in-span-for-stream-completion-when-multiple-tools-cal_2278551756
    • test

14 files changed

+1153
-298
lines changed

package.json

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,7 @@
55
"scripts": {
66
"build:all": "pnpm nx run-many -t build",
77
"build:affected": "pnpm nx affected -t build",
8-
"build:deps": "pnpm nx run-many --targets=build --projects=@traceloop/instrumentation-openai,@traceloop/node-server-sdk",
9-
"dev:sample": "pnpm build:deps && pnpm --filter sample-app run:image_generation",
10-
"dev:run": "node dev-run.js",
11-
"postinstall": "pnpm build:deps"
8+
"build:deps": "pnpm nx run-many --targets=build --projects=@traceloop/instrumentation-openai,@traceloop/node-server-sdk"
129
},
1310
"private": true,
1411
"devDependencies": {

packages/instrumentation-openai/recordings/Test-OpenAI-instrumentation_1770406427/should-calculate-correct-tokens-for-different-quality-levels_3292443992/recording.har

Lines changed: 220 additions & 0 deletions
Large diffs are not rendered by default.

packages/instrumentation-openai/recordings/Test-OpenAI-instrumentation_1770406427/should-emit-logprobs-span-event-for-chat-completion_1028826680/recording.har

Lines changed: 40 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
{
6464
"_fromType": "array",
6565
"name": "x-stainless-runtime-version",
66-
"value": "v18.17.1"
66+
"value": "v20.11.1"
6767
},
6868
{
6969
"_fromType": "array",
@@ -75,7 +75,7 @@
7575
"value": "api.openai.com"
7676
}
7777
],
78-
"headersSize": 470,
78+
"headersSize": 583,
7979
"httpVersion": "HTTP/1.1",
8080
"method": "POST",
8181
"postData": {
@@ -87,23 +87,23 @@
8787
"url": "https://api.openai.com/v1/chat/completions"
8888
},
8989
"response": {
90-
"bodySize": 1147,
90+
"bodySize": 1517,
9191
"content": {
9292
"encoding": "base64",
9393
"mimeType": "application/json",
94-
"size": 1147,
95-
"text": "[\"H4sIAAAAAAAAA8RYS2/aQBC+8ys2e8kF0D7sfXCJmkrNpU0vaakURcjYi3Fjey17aUqj/PfKhgDBlllBTDhYaHbWnm9mZ+bbee4BAKMAjgD0557xkyweyBtzG8Zm/O82+/lLjcfujy/fPt3MRHz99fMj7Jc79PS38s3rrqGvkyxWJtLpatnPlWdU+Q==\",\"VswxFZhihqqFRAcqLreFmRnQoTswi3yqBwgTd71zriNfFXAE7nsAAPBcPUsb00D9hSNQvaeSJKoovFDB0UYJAJjruJRAryiiwnipgf3toq9To9LK7PF8CYIoAGauwPdMpXcqVoky+RIE6o+KdaZyEGpgdKmRe9nyClwr31sUqhQsga8XcZBeGmByz69kUQ70UwpmSsVRGhYXcP3dl43BsQ6zXE+LtxZvjbrfCMGOQqVk9KNK13bvINp9LRyBARoihDARjiMdsqc2XZodv25/gvf3JBg5NRHBbyQP/X37sskOvPuHneWXvgWuMhjtwLAQzEEYW8KipA4L1UVug1bHSM1ctSIlyHUIleJ4oJjZhBR1HdIyr1qRYkQQIowdjZTLOvaGuOO6VsdBvmsLMR8KyShWA26boucP3roatqAgQ4EZkpSogW0AMRI2wUHSKoT1Q44/om69tov2k86RK513rl0NPrHzb10L42MTyenYv6FudSxzJEeUneBY2uCMrjtAGyY6RJxgzOm71v/uMa1o0gFyIgVnDLPuW5tFbZDc5sx3XUCuDnEBIhCxPQuMdhzlNQdur3UCc4Lw8fyFMYuASmkTzwaRe34iVN4Y2hODOlwg5rofkBidd8jVVakVv8OxYOx49FJadTRu0wobOm3XbPHSHLzTIcqFfd1scAfr+oyX9+BWGC6ilCPyvm3NoqpL+SEZH7UzQuQ4hCC6T+3PkvINt97OeZx+ai8BHGNM5AkMuSnh5dlTeTP/OXBzcgU+odgjK25uR/2bDgOyoslut668ODAPolJwbD8mOYEabf4/1GZ6syiNivkkV16hK6sLo7PV6K/cVn0GLt7MKWGW6yQzkwpo+bHXkwC3Y9TtIlnHAhptvHgrp6X3KztgsSyMSiazKA1VnuXRasI5yyY+IdJVnHoB7L30/gMAAP//AwDW79xN6xUAAA==\"]"
94+
"size": 1517,
95+
"text": "[\"H4sIAAAAAAAAA8xXwW6cMBC95ytGnBdkY2PjvURRW0U99RKplaKoYmGy0ICNjGm6ivrvFWQ=\",\"u9kERNCmtN3DHmbG1rz3xjPDwxmAV2TeGrw0T1xa1aX/LrwXKbUX7+2HVFV4UX2J73l2cfkxvNStt+pOmM03TN3vU0FqqrpEVxj96E4tJg67W6mMeEwFiUjvqEyGZXdsWzufBZHvWrsxPqFhtD+ZmyLFxlvD9RkAwEP/3+WoM/zhraG/p7dU2DTJFr31IQjAs6bsLF7SNEXjEu281ZMzNdqh7tP+nO8gKzJwOcKnGvUVllihszvI8DuWpkYLG4vJHbQ13Bcu7yILC3VinUZ7Dlc57qBJHq/YgUbMMIPKWARXVAjOwK1J2waMBmeTtNDb/RUWy6SjqsmLOjhOz+Jt2yQdPbotyyNHorVxj2c6Ym72np8HKkqzra3ZNM+5eIJ7fTDCUUAf5Mwd6j0jR8kcX+utwScBIYQIxSOi+Iuwzc4dKfb0i+XqhYUSPjCF9JnlZvUyv/rrEbwD+GcETOHqZJ4GRrmMaRzTmbBYOIRFhqZoJGphpC7HSaQhoUSR8HScVMxRlCytaPdgJ4HSiAoZng5UqiH0EdXpMGphia+mBFYBiWPGBUdfzn2if1+9fZ+dwCGCiFJOJPpiJgxK4jnqEDVLw2GR03/Rtn7PoelKj5mUSsV/tneNkDKP4GEUpac+Jb4wwf14nyRXEckZEydzq+I5lTTErkYGp1yYjbZ+dfpLpmIi3lBqVI7UwsK4ut3tVWRhyGMulHwDNDVnAxidn8svBcV0DyERV6EQbPm9YBZHSxOyX+EnKKGBYEyE4Vs2pXDGox5pBmPDh/wP7fL8lRJikqjZrVKwhTXuvs4mEmYBYULK6PReNrY4zar4xfeG7pt0sraV5Iow9gsAAP//\",\"5FlLbsMgEN37GBwgMl/DaSzLJglSYixMKnXRu1fGSXEal4ziuKnULZ8RjxmYefMWxDaHJKzX8J87HFZwIhdlMPFX3T42IO4R3ZwXxSLXg/6iuSHYxrUjZOjPpOtpmiuSS7GgnlagGvgFtHnoSyXAs02OsRT8ua+Dw1jY2tBt+mUoylnOnvsx4LVBhf5iEhdThHDKFgQzAQSzUqBKn698HbZNZnyGCcaYw5sKlIAe8upJbWwep4kqIbnABXtu/LL7aV7BaM/M509fT3sULQiV/4X2TGWHZH2IGZWCqQXXwh7rFc0xJFBGmX2WgLJ11lv813sUm6Q7JMFYUigVZeLxs2Yzu76JUjfK09a0pt+XTle9DWB6bzuUXewFS+h0pdOhztlj58uAfzjFxTEoyohxkpwjAHnrq0McZ2efX1srG+0rc5gKYaiu6r1u4s6oIFanxtjJRDbBdnuYOdsjbtPuIObjRF3rzuum7JxuTH0NOC5zehBZf1r2dcfhwKjX7s3UuvRGu8EPjd5Wp8Mof6L+vff6WG5Nu9OucyaIgsGfH9knAAAA//8=\",\"AwDs0La3Ah4AAA==\"]"
9696
},
9797
"cookies": [
9898
{
9999
"domain": ".api.openai.com",
100-
"expires": "2024-04-22T19:42:40.000Z",
100+
"expires": "2025-08-10T09:24:10.000Z",
101101
"httpOnly": true,
102102
"name": "__cf_bm",
103103
"path": "/",
104104
"sameSite": "None",
105105
"secure": true,
106-
"value": "3S7nFjQIeVqiriw6xIQiXnrh5rNZGFk24qbLEosQImk-1713813160-1.0.1.1-A6uQAPUGKB0lMQ6lF.vwP3Dpgaa83WwhlZ0voEImwl3uAQmmYxkOou_a0wtblhj_6bd_CgTNgyYrVfhnSCOfCA"
106+
"value": "zD7LXjoev4nxLDlAFl7S0Rx9pfRXrSpVbEy8rpH24ho-1754816050-1.0.1.1-bZBB6JUfdaoAvc3mYWK2LXulnF6rtFYsRO.PUwjBB_HX5Rpmxsp9cdP6ff0y5qOQuRGxlNP5XF6DlZbc4gqRgIS5H75fIfhkWSH5kAtM25c"
107107
},
108108
{
109109
"domain": ".api.openai.com",
@@ -112,13 +112,13 @@
112112
"path": "/",
113113
"sameSite": "None",
114114
"secure": true,
115-
"value": "kbUq6yDBUrJ.tFnbx3NklUCqY.1oT7.eEDORno5hrYA-1713813160752-0.0.1.1-604800000"
115+
"value": "dtH2gyIiH85r2vkefDpsKnbbUduRVxKWk5QcH40EDKo-1754816050798-0.0.1.1-604800000"
116116
}
117117
],
118118
"headers": [
119119
{
120120
"name": "date",
121-
"value": "Mon, 22 Apr 2024 19:12:40 GMT"
121+
"value": "Sun, 10 Aug 2025 08:54:10 GMT"
122122
},
123123
{
124124
"name": "content-type",
@@ -133,60 +133,56 @@
133133
"value": "keep-alive"
134134
},
135135
{
136-
"name": "access-control-allow-origin",
137-
"value": "*"
138-
},
139-
{
140-
"name": "cache-control",
141-
"value": "no-cache, must-revalidate"
142-
},
143-
{
144-
"name": "openai-model",
145-
"value": "gpt-3.5-turbo-0125"
136+
"name": "access-control-expose-headers",
137+
"value": "X-Request-ID"
146138
},
147139
{
148140
"name": "openai-organization",
149141
"value": "traceloop"
150142
},
151143
{
152144
"name": "openai-processing-ms",
153-
"value": "657"
145+
"value": "223"
146+
},
147+
{
148+
"name": "openai-project",
149+
"value": "proj_tzz1TbPPOXaf6j9tEkVUBIAa"
154150
},
155151
{
156152
"name": "openai-version",
157153
"value": "2020-10-01"
158154
},
159155
{
160-
"name": "strict-transport-security",
161-
"value": "max-age=15724800; includeSubDomains"
156+
"name": "x-envoy-upstream-service-time",
157+
"value": "310"
162158
},
163159
{
164160
"name": "x-ratelimit-limit-requests",
165-
"value": "5000"
161+
"value": "10000"
166162
},
167163
{
168164
"name": "x-ratelimit-limit-tokens",
169-
"value": "160000"
165+
"value": "50000000"
170166
},
171167
{
172168
"name": "x-ratelimit-remaining-requests",
173-
"value": "4999"
169+
"value": "9999"
174170
},
175171
{
176172
"name": "x-ratelimit-remaining-tokens",
177-
"value": "159974"
173+
"value": "49999989"
178174
},
179175
{
180176
"name": "x-ratelimit-reset-requests",
181-
"value": "12ms"
177+
"value": "6ms"
182178
},
183179
{
184180
"name": "x-ratelimit-reset-tokens",
185-
"value": "9ms"
181+
"value": "0s"
186182
},
187183
{
188184
"name": "x-request-id",
189-
"value": "req_829d9c57bfc8c994a6d6f2b07b1a31c5"
185+
"value": "req_ec71cbb961ed4ec58a1c0ddc921ccf86"
190186
},
191187
{
192188
"name": "cf-cache-status",
@@ -195,20 +191,28 @@
195191
{
196192
"_fromType": "array",
197193
"name": "set-cookie",
198-
"value": "__cf_bm=3S7nFjQIeVqiriw6xIQiXnrh5rNZGFk24qbLEosQImk-1713813160-1.0.1.1-A6uQAPUGKB0lMQ6lF.vwP3Dpgaa83WwhlZ0voEImwl3uAQmmYxkOou_a0wtblhj_6bd_CgTNgyYrVfhnSCOfCA; path=/; expires=Mon, 22-Apr-24 19:42:40 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None"
194+
"value": "__cf_bm=zD7LXjoev4nxLDlAFl7S0Rx9pfRXrSpVbEy8rpH24ho-1754816050-1.0.1.1-bZBB6JUfdaoAvc3mYWK2LXulnF6rtFYsRO.PUwjBB_HX5Rpmxsp9cdP6ff0y5qOQuRGxlNP5XF6DlZbc4gqRgIS5H75fIfhkWSH5kAtM25c; path=/; expires=Sun, 10-Aug-25 09:24:10 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None"
199195
},
200196
{
201197
"_fromType": "array",
202198
"name": "set-cookie",
203-
"value": "_cfuvid=kbUq6yDBUrJ.tFnbx3NklUCqY.1oT7.eEDORno5hrYA-1713813160752-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None"
199+
"value": "_cfuvid=dtH2gyIiH85r2vkefDpsKnbbUduRVxKWk5QcH40EDKo-1754816050798-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None"
200+
},
201+
{
202+
"name": "strict-transport-security",
203+
"value": "max-age=31536000; includeSubDomains; preload"
204+
},
205+
{
206+
"name": "x-content-type-options",
207+
"value": "nosniff"
204208
},
205209
{
206210
"name": "server",
207211
"value": "cloudflare"
208212
},
209213
{
210214
"name": "cf-ray",
211-
"value": "8787ed3969e26d85-MUC"
215+
"value": "96ce44592a942253-TLV"
212216
},
213217
{
214218
"name": "content-encoding",
@@ -219,22 +223,22 @@
219223
"value": "h3=\":443\"; ma=86400"
220224
}
221225
],
222-
"headersSize": 1208,
226+
"headersSize": 1294,
223227
"httpVersion": "HTTP/1.1",
224228
"redirectURL": "",
225229
"status": 200,
226230
"statusText": "OK"
227231
},
228-
"startedDateTime": "2024-04-22T19:12:39.832Z",
229-
"time": 901,
232+
"startedDateTime": "2025-08-10T08:54:10.014Z",
233+
"time": 717,
230234
"timings": {
231235
"blocked": -1,
232236
"connect": -1,
233237
"dns": -1,
234238
"receive": 0,
235239
"send": 0,
236240
"ssl": -1,
237-
"wait": 901
241+
"wait": 717
238242
}
239243
}
240244
],

0 commit comments

Comments
 (0)