ci: keyless demo smoke tier + fix weekly-health skips/failures (#48)#53
ci: keyless demo smoke tier + fix weekly-health skips/failures (#48)#53karlwaldman wants to merge 1 commit into
Conversation
…#48) - live-tests.yml: split into (1) an always-run keyless demo smoke against /v1/demo/* with no secret and no gate, and (2) the keyed live suite, which now warns loudly (::warning::) instead of silently exiting when the secret is unavailable. - weekly-health.yml: export the secret as BOTH OILPRICEAPI_KEY and OILPRICEAPI_TEST_KEY — the env-name mismatch was silently skipping the live futures/subscriptions tests every Monday. Also add the keyless demo smoke tier. - test_historical_endpoints.py: the 1-year/multi-year length assertions (>300 / >1000 points) could never pass against the API's 100-point page cap and kept weekly-health red; assert non-empty data and keep the timing baselines as the real regression guards. - test_api_contract.py: unknown commodity codes now return HTTP 400 invalid_code (was 404) — update the two stale contract tests to the current API contract. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Warning Review limit reached
Next review available in: 42 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (4)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary
Implements the two-tier live-smoke pattern from #48 and fixes the failures/silent skips that were keeping Weekly SDK Health Check red (last run 2026-07-06: 2 failures + live futures/subscriptions silently skipped).
Tier the live jobs (#48)
live-tests.yml: new always-run keyless demo smoke step (tests/integration/test_demo_contract.py, hits public/v1/demo/*, needs no secret, has no gate — it structurally cannot silently skip), followed by the keyed live suite which now emits a::warning::instead of silently exiting 0 when the secret is unavailable (forks).weekly-health.yml: same keyless tier added, and the secret is now exported as bothOILPRICEAPI_KEYandOILPRICEAPI_TEST_KEY. The conftests read the former buttest_live_futures.py/test_live_subscriptions.pyread the latter — the mismatch meant those live tests skipped on every weekly run even though the secret is populated.Fix the tests that kept weekly-health red
test_historical_endpoints.py: two tests asserted >300 / >1000 datapoints for 1-year/5-year queries, but the API paginates time-window responses at 100 points/page — they could never pass. Now assert non-empty data and keep the timing baselines (<120s / <180s), which are the actual v1.4.1-regression guards.test_api_contract.py: the API now returns HTTP 400invalid_code(with suggestions) for unknown commodity codes instead of 404 — exactly the kind of drift these contract tests exist to catch, but the failures were masked because the weekly job died at the earlier step. Both tests updated to the current contract (verified live).Test evidence (local, against production API)
pytest tests/ -m integration --timeout=90(both env names set, as the workflow now does) — 16 passed, 2 skipped (previously 2 failed + 5 silently skipped)pytest tests/ -m contract --timeout=90— 21 passed, 1 skipped (previously 2 failed)pytest tests/ --ignore=tests/integration --ignore=tests/contract -m 'not slow'— 328 passed, 10 skippedCloses #48
🤖 Generated with Claude Code