-
[OPIK-7542] [QA] fix: retarget Optimization Studio POM at the new-run side panel (#7669)
发布于
2026-07-29 13:39:07 +00:00 - [OPIK-7530] [QA] fix: retarget Optimization Studio POM at the new-run side panel
The new-run flow moved from the
/optimizations/newfull page into a side
panel (/optimizations?new=true) in #7291, which deleted the "Optimize a
prompt" heading the POM waited on. All three studio specs died in the shared
gotoNew() helper, so they had never passed since 2026-07-17 (39/39 attempts
failed across 13 nightly t3 runs, identical stack).Wait on the panel's own
data-testidinstead, keep navigating the legacy
/newpath so the redirect stays covered, scope the dataset dialog's
search-input (the panel behind it renders a second one), and let the model
combobox match its "Select an LLM model" placeholder so the form is
assertable with no provider key configured.Co-Authored-By: Claude Opus 5 noreply@anthropic.com
- test(optimization-studio): pin the form test's model instead of the deployment default
The form test relied on whatever model the new-run panel defaults to. That
default is deployment-specific (the free gpt-5-nano on Comet) and is empty when
no provider key is configured, which leaves "Optimize prompt" disabled and fails
the enablement assertion. Select the model the run tests already use
(ensureModelAvailable -> Claude Haiku 4.5) so the assertion tests the form's
gate rather than the deployment's default.Verified 9/9 green locally against a stack with a provider key configured.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com
- fix(optimization-studio): assert the config pills in the header, not the tabpanel
expectBestTrialConfig scoped to getByRole('tabpanel'), but the algorithm and
metric render as pills in the detail page's header — OptimizationHeader mounts
at OptimizationPage.tsx:198, outside the that starts at :207 — so the
Overview panel provably never contains "GEPA optimizer". Scope tomain.This was the only real blocker for the two run tests: they already executed
real optimizer runs end-to-end and passed every backend assertion. The
"No usable scores" banner that shows alongside a scored baseline is a separate
cosmetic product issue (OPIK_7458 — computeEmptyRunWarning's.every()returns
true for zero non-baseline candidates) and is not asserted here.All 3 studio specs: 15/15 green over 5 consecutive local runs.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com
- fix(local-runner): pass OPIK_URL_OVERRIDE to the connect/endpoint daemons
startConnectRunner and startEndpointRunner spawned
opik connect/opik endpointwith OPIK_API_KEY and OPIK_WORKSPACE but no OPIK_URL_OVERRIDE, so the
SDK fell back to ~/.opik.config. On any machine that also runs a local stack
that config points at localhost, and the daemon reportedReason Workspace not found
URL http://localhost:5173/apiagainst a cloud target, failing before the pairing URL was ever scraped. The
two other places the suite spawns the SDK (playwright.config.ts:62 for the
sdk-driver, agents/known-failing/harness.ts:65) already pass the override; this
brings the local-runner spawns in line.apiUrl is required on StartConnectOpts rather than optional so a missing URL is
a compile error instead of a silent fall-through to whatever the host machine
happens to have configured. StartEndpointOpts inherits it, which also fixes the
agent-playground local-runner spec.Co-Authored-By: Claude Opus 5 noreply@anthropic.com
- fix(ollie): match the post-New-chat greeting variant
startNewChat() waited on "Hi there!", but after clicking New chat the prod
panel renders only the action strapline ("Investigate traces, analyze
performance, or run actions.") — no "Hi there!" at all, so the wait failed with
"element(s) not found" rather than a slow render. Match either variant, and give
the wait an explicit budget since the greeting is re-rendered by the assistant
pod rather than the host page.Measured against production (WORKERS=1, ollie-smoke "completion"):
before: 3/6 runs failed
after: 1/8 runs failedThe residual 1/8 is a DIFFERENT failure and is left unfixed: the "Send message"
button is not present within the 15s actionTimeout after filling the input
(pom/ollie.page.ts:68). It looks conditionally rendered rather than always
mounted, but that needs its own investigation — not folded in here.Co-Authored-By: Claude Opus 5 noreply@anthropic.com
Co-authored-by: Claude Opus 5 noreply@anthropic.com
下载附件