Skip to content

Un-skip the framework integration tests, and fix the three that were stale - #28

Merged
michalakmarcinth merged 1 commit into
mainfrom
claude/eval-skill-check-dbe48l-extras
Aug 24, 2026
Merged

Un-skip the framework integration tests, and fix the three that were stale#28
michalakmarcinth merged 1 commit into
mainfrom
claude/eval-skill-check-dbe48l-extras

Conversation

@michalakmarcinth

@michalakmarcinth michalakmarcinth commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Follow-up to #27, retargeted to main now that it has landed. (It edits tests.yml, which only exists because #27 renamed docs.yml, so it was stacked on that branch until then.)

Why

#27 went green with 28 tests skipped, and a skip is only honest if someone eventually checks what it was hiding. Installing every extra and actually running them turned up three failures — all the same shape as the tool_calls one fixed in #27:

KeyError: 'performance_summary'

9d45dd1 replaced the synthetic performance_summary step list with real child spans. Three more tests were never updated, and nothing ran them:

Test Asserted Reality since 9d45dd1
test_crewai_captures_real_per_task_timing_via_event_bus performance_summary["execution_steps"] one child span per task
test_autogen_agent_run_traces_text_reply performance_summary["execution_steps"] the turn is a child span
test_autogen_agent_run_traces_tool_call performance_summary["tool_calls"] child span + root mirror

The fixes keep what each test was for

crewai's test proved per-task timings come from the real event bus rather than an even split — genuinely worth keeping, and the timings are still there, now as one child span per task carrying its own latency. Each assertion is rewritten against what the tracer actually emits, observed with a probe rather than guessed.

The autogen tool-call test now also pins the root's flat tool_calls mirror — the same deliberate dual-write #27 documents, and what the engine's "Tool failure" check and the dashboard's Tool quality column read.

All three had to move off test_integrations.py's make_tracer(), which mocks tracer._send and so bypasses the very _send/_dispatch/child_span chain that builds child spans. They mock the ingest-client boundary instead — the idiom test_span_tree.py already uses and documents.

A guard that would have hidden a real failure

Both autogen tests import autogen_ext — a separate distribution, not part of the autogen extra — while guarding only autogen_agentchat, so they raised ModuleNotFoundError instead of skipping.

Guarding it was the obvious fix, but installing autogen-ext to check first showed both tests failing on the stale assertion above. The guard alone would have papered over that. It's why every guarded test here was run with its dependency present before the skip was trusted.

autogen-ext deliberately stays out of setup.py: ReplayChatCompletionClient is a test double, so it's a CI dependency, not something users of the autogen extra should be made to install.

CI

tests.yml grows an extras job installing .[all] plus autogen-ext, so these can't rot again. It sits beside the base job rather than replacing it: the base install is what most contributors have and gives fast feedback on both Pythons, while extras is slower (chromadb, onnxruntime come along) and runs on one. .[all] was verified to resolve cleanly before relying on it.

Install Result
base (.[langchain]) 73 passed, 28 skipped, 0 failed
.[all] 84 passed, 17 skipped, 0 failed
.[all] + autogen-ext 86 passed, 15 skipped, 0 failed

No test was quieted to get there

Every rewritten assertion was verified to fail against a tree where the behaviour it protects is broken:

  • crewai regressed to the even-split approximation → fails
  • the root tool_calls mirror removed → fails
  • the child span renamed → fails

Tests and CI only; no library code changed.

🤖 Generated with Claude Code

https://claude.ai/code/session_01WYi6akpDa8qfiojRed2cAE

…stale

Yesterday's suite went green with 28 tests skipped, and a skip is only honest if
someone eventually checks what it was hiding. Installing every extra and running
them turned up three failures, all the same shape as the tool_calls one fixed in
the previous commit: assertions left behind by 9d45dd1, which replaced the
synthetic performance_summary step list with real child spans.

  KeyError: 'performance_summary'

crewai's test proved per-task timings come from the real event bus rather than
an even split - genuinely worth keeping, and the timings are still there, now as
one child span per task carrying its own latency. Both autogen tests were the
same: the agent's turn, and a tool call, are child spans now. Each assertion is
rewritten against what the tracer actually emits, observed rather than guessed,
and each keeps the property its test was written for - crewai still fails if the
even-split approximation comes back, and the autogen tool-call test now also
pins the root's flat tool_calls mirror, which is what the engine's "Tool
failure" check and the dashboard's Tool quality column read.

All three had to move off test_integrations.py's make_tracer(), which mocks
tracer._send and so bypasses the very _send/_dispatch/child_span chain that
builds child spans. They mock the ingest-client boundary instead, the idiom
test_span_tree.py already uses and documents.

The autogen tests also import autogen_ext, a separate distribution that is not
part of the "autogen" extra, without guarding it - so they raised
ModuleNotFoundError instead of skipping, exactly like the google-adk tests in
the previous commit. Guarded now. It stays out of setup.py:
ReplayChatCompletionClient is a test double, so it is a CI dependency, not
something users of the autogen extra should be made to install.

CI grows an extras job that installs .[all] plus autogen-ext and runs the suite
with every integration present, so these cannot rot again. It sits beside the
base job rather than replacing it: the base install is what most contributors
have and gives fast feedback on both Pythons, while extras is slower (chromadb,
onnxruntime and friends) and runs on one. .[all] resolves cleanly - checked
before relying on it.

  base install                 73 passed, 28 skipped
  .[all]                       84 passed, 17 skipped
  .[all] + autogen-ext         86 passed, 15 skipped

No test was quieted to get there: every rewritten assertion was verified to fail
against a tree where the behaviour it protects is broken - crewai regressed to
the even split, the root tool_calls mirror removed, the child span renamed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WYi6akpDa8qfiojRed2cAE
@michalakmarcinth
michalakmarcinth changed the base branch from claude/eval-skill-check-dbe48l to main August 24, 2026 19:20
@michalakmarcinth
michalakmarcinth merged commit 486a984 into main Aug 24, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants