Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Fixed

- **Test-fixture timing flake (`stays_pending` / `never_quiet`)** — `tests/fixtures/test_browser.json` had `timeout_s: 0.05` for the two timing-loop test cases that assert `evaluate.call_count >= 2`. The 50ms budget passed in CI's clean Linux container but flaked under local CPU pressure (e.g., when `release.py` runs the full 1970-test suite back-to-back), failing with `assert 1 >= 2` because the loop only iterated once. Surfaced — and shipped through — during the v0.8.1 release. Bumping to `timeout_s: 0.5` gives 10× headroom; verified across three concurrent stress runs.

## [0.8.1] - 2026-05-03

### Fixed
Expand Down
4 changes: 2 additions & 2 deletions tests/fixtures/test_browser.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,13 @@
"wait_for_pending_data_cases": [
{"id": "immediate_zero", "pending_values": [0], "timeout_s": 1.0, "expect_timeout": false, "description": "returns immediately when pending is 0"},
{"id": "drains_to_zero", "pending_values": [3, 2, 1, 0], "timeout_s": 1.0, "expect_timeout": false, "description": "waits until pending drains to 0"},
{"id": "stays_pending", "pending_values": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], "timeout_s": 0.05, "expect_timeout": true, "description": "times out when requests never complete"},
{"id": "stays_pending", "pending_values": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], "timeout_s": 0.5, "expect_timeout": true, "description": "times out when requests never complete (timeout_s=0.5 not 0.05: tighter values flake under local CPU pressure when 1969 other tests compete; CI's clean container hid this for releases)"},
{"id": "evaluate_exception", "pending_values": "exception", "timeout_s": 1.0, "expect_timeout": false, "description": "returns on page.evaluate exception"}
],
"wait_for_quiescence_cases": [
{"id": "already_quiet", "pending_values": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "quiescence_s": 0.01, "timeout_s": 1.0, "expect_timeout": false, "description": "returns when already quiescent"},
{"id": "activity_then_quiet", "pending_values": [2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "quiescence_s": 0.01, "timeout_s": 1.0, "expect_timeout": false, "description": "waits through activity then detects quiescence"},
{"id": "never_quiet", "pending_values": [1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0], "quiescence_s": 5.0, "timeout_s": 0.05, "expect_timeout": true, "description": "times out when activity oscillates"},
{"id": "never_quiet", "pending_values": [1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0], "quiescence_s": 5.0, "timeout_s": 0.5, "expect_timeout": true, "description": "times out when activity oscillates (timeout_s=0.5 not 0.05; same flake mode as stays_pending)"},
{"id": "evaluate_exception", "pending_values": "exception", "quiescence_s": 0.01, "timeout_s": 1.0, "expect_timeout": false, "description": "returns on page.evaluate exception"}
],
"output_path_cases": [
Expand Down
Loading