Skip to content

fix(test): type open-GOP fixture and fail on page errors - #7814

Merged
kixelated merged 2 commits into
mainfrom
quest/m0/interop-green/open-gop-fixture
Nov 4, 2026
Merged

kixelated merged 2 commits into
mainfrom
quest/m0/interop-green/open-gop-fixture

Conversation

@kixelated

@kixelated kixelated commented Nov 4, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

The open-GOP fixture casts an incomplete object to Broadcast, and an exception caught by a signal effect only reaches the console while the browser test waits for recovery until its 60-second deadline. Implements the remaining fixture work in quest/m0/interop-green/open-gop-fixture.md.

Approach

  • Use a real local origin and manual-catalog Broadcast, removing the unchecked fixture cast.
  • Reuse open, waitFor, and throwPageErrors from the existing browser harness. Poll the recovery result separately from its pending promise so page errors, rejected recovery, and caught effect exceptions fail directly.
  • Preserve the recovery assertions and 60-second deadline. Keep the quest with a precise Waiting item for scheduled evidence on main; the parent epic still owns the whole-workflow pass.

Choices made: use the real broadcast implementation instead of adding another partial interface or cast. No production API refactor is needed.

Impact

  • Public API: none.
  • Wire: none.

Alternatives

The missing name was already fixed by moq-dev/moq#7672. moq-dev/moq#7716 applies the existing collection to buffering tests and leaves open-GOP separate. The refreshed index of all 57 open PRs also found moq-dev/moq#7729, whose only open-GOP change declares unlimited max age for its proposed default. This PR leaves that independent change to it.

Validation

  • Baseline open-GOP recovery passes. Injecting an exception into its broadcast effect logs the original error but fails only at the unchanged 60-second test timeout.
  • After: controlled effect, page-load, and recovery-rejection probes each fail with their original error in 0.85 to 1.36 seconds, without reaching the deadline. Temporary mutations were restored.
  • quest gate nix develop --command just test harness: passes, including all 43 browser/unit cases and the shell/Python harness checks.
  • quest gate nix develop --command just ci: all selected checks pass.
  • Interop browser client bun run check: passes.
  • quest check --base origin/main and git diff --check: pass.

Review

  • Reviewer: Claude Code via quest review --base origin/main, Claude Opus 5.5, medium effort, round 2.
  • Reviewed head: 23c971b9e0a6fed34b64dff2dd60dc880f3c4564.
  • Findings: none remaining. Round 1's low-severity request for an earlier silent-hang deadline was refuted: this quest requires direct effect/page error reporting, demonstrated by the probes above; the existing silent-hang limit remains 60 seconds. Round 2 accepted the refutation.

Follow-ups

Scheduled confirmation remains in the quest. No Nightly workflow was dispatched, and a local pass is not presented as scheduled evidence.

(Written by GPT-6.1 Sol)

kixelated and others added 2 commits November 3, 2026 21:01
@kixelated kixelated changed the title The open-GOP recovery fixture provides the broadcast name fix(test): type open-GOP fixture and fail on page errors Nov 4, 2026
@kixelated
kixelated marked this pull request as ready for review November 4, 2026 05:12
@coderabbitai

coderabbitai Bot commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 3 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available.

Learn how review limits work.

Review configuration:

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 52efbb39-50c6-428d-9968-3ea7bd1916c1
Commits

Reviewing files that changed from the base of the PR and between eacff68 and 23c971b.

Files selected for processing: 4
  • quest/m0/interop-green/README.md
  • quest/m0/interop-green/open-gop-fixture.md
  • test/interop/clients/js/open-gop.browser.ts
  • test/interop/clients/js/open-gop/main.ts
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

Share

@kixelated kixelated left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated review by review (OpenAI)

Reviewed head 23c971b.

No actionable findings. The real manual-catalog broadcast removes the unchecked fixture shape, and polling independently of recovery lets the shared harness surface page and effect errors while retaining the existing recovery assertions. Scheduled Interop confirmation remains pending as recorded in the quest.

Verification: GitHub-only static review of the fixture, browser harness and scheduled-test wiring. I did not run the tests or the scheduled workflow.

(Written by review (OpenAI))

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes — This run reviewed the full two-commit diff for the open-GOP fixture rework against the harness and the @moq/watch broadcast/decoder paths.

  • Real fixture instead of a cast: test/interop/clients/js/open-gop/main.ts replaces the as unknown as Broadcast stub with a real local Moq.Origin.Producer plus a manual-catalog Broadcast, so the decoder's broadcast.in.name read (and any field it adds later) comes from the real type. origin.close() retires the publication (retire() in js/net/src/origin.ts), so dropping explicit producer.close()/media.close() leaks nothing.
  • Fail on page errors: open-gop.browser.ts now reuses the harness open/waitFor/throwPageErrors path and polls window.recoveryResult separately from the pending promise. Page errors, console errors (including the caught signal-effect errors that log via console.error), crashes, and a rejected recovery all fail within one poll interval instead of waiting out the 60-second deadline.
  • Quest bookkeeping: retitles the quest to scheduled confirmation, adds the ## Waiting item for a scheduled Interop run, and aligns the parent README's Required bullet.

Pullfrog  | View workflow run | Using deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏

@kixelated
kixelated added this pull request to the merge queue Nov 4, 2026
Merged via the queue into main with commit abb5972 Nov 4, 2026
11 checks passed
@kixelated
kixelated deleted the quest/m0/interop-green/open-gop-fixture branch November 4, 2026 07:10
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.

1 participant