mirror of
https://github.com/openobserve/openobserve.git
synced 2026-11-05 16:10:43 +00:00
## Summary - **13 Playwright E2E journey tests** for the Model Pricing feature (\`/settings/model_pricing\`), consolidating all P0–P2 scenarios into journey-based flows - New page object \`ModelPricingPage\` under \`pages/generalPages/\` - API cleanup integrated into the centralized \`APICleanup\` class and called from \`cleanup.spec.js\` - CI matrix updated: \`ZO_MODEL_PRICING_ENABLED=true\` env var added; \`model-pricing.spec.js\` added to the \`GeneralTests\` job - **Bug fix**: \`waitForBuildTabLoaded\` now polls the Monaco editor for non-empty content (Phase 3), fixing a timing race where Build tab SQL tests read an empty query string on slower CI machines ## Test coverage | Journey | Scenarios covered | |---------|------------------| | List, tabs & search | Controls, tab switching, search, built-in tab | | Create & validation | All form validation cases + successful save | | Edit, cancel & delete | Full lifecycle | | Duplicate & clone | Org model duplicate + built-in clone | | Bulk actions | Select, export JSON, bulk delete | | Toggle | Disable/re-enable with correct visual state | | Test match dialog | Empty state, no-result, clear, match result | | Import | Valid JSON, correction flow, cancel | | Editor features | Multi-tier, pricing template, pattern examples | | Pricing drawer | Overflow link → drawer with all price keys | | Empty state | CTA when org has no custom models | | Cost applied | LLM span matched → cost stored correctly | | No matching model | Unknown model name → zero cost stored | ## Bug fix: Build tab query editor timing \`waitForBuildTabLoaded\`'s Phase 2 (chart-type-selected signal) fires as soon as \`initializeFromQuery\` sets the chart type — before \`makeAutoSQLQuery\` has run. On slower CI machines this left \`queries[0].query\` empty when tests read the editor, causing the "SQL ON + Auto mode" and "Auto → Custom" tests to receive \`""\` instead of generated SQL. Phase 3 polls the Monaco editor (\`[data-test="logs-search-bar-query-editor"]\`) for non-empty content, confirming \`onBuildQueryGenerated\` has been called and the query is ready. ## Test plan - [x] All 13 model pricing tests pass locally - [x] \`logsQueryBuilder-editor.spec.js\` (23 tests) — all pass with Phase 3 fix applied - [x] Sentinel code audit passed (no blocking issues) - [x] API cleanup added to \`cleanup.spec.js\` via \`apiCleanup.cleanupModelPricingModels()\` — 404-safe for instances where the feature is disabled 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>