Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

plugin-calendar: object-calendar-renderer.propsContract.test.tsx escapes to the real network on 127.0.0.1:3000 (4 ECONNREFUSED, same class as #3339 / #5225 / #5280) #5438

Closed

Description

@os-support-ai

Found while working #5421 — this is the stderr noise that the coverage-lane logs show and that a reader could mistake for the shard failure. It is not a failure: the run stays green. Filed unassigned.

Measured

From the repo root of a clean worktree on main (9f7d786bd), the file standing alone:

pnpm exec vitest run packages/plugin-calendar/src/object-calendar-renderer.propsContract.test.tsx

emits exactly four of these and then passes:

Error: connect ECONNREFUSED 127.0.0.1:3000
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1637:16) {
  errno: -111,
  code: 'ECONNREFUSED',
  syscall: 'connect',
  address: '127.0.0.1',
  port: 3000
}

Attribution was confirmed twice: a single-worker sequential run of a 27-file subset (--maxWorkers=1 --fileParallelism=false) prints the four errors in the middle of this file's own case list, between the locale-rejection cases and the onEventClick cases; and the file alone reproduces all four.

Coverage is irrelevant to it — the same four appear with and without --coverage, so the green PR lane carries this noise today as well. On CI the same four appear as AggregateError with both ::1:3000 and 127.0.0.1:3000 legs, because the runner has IPv6.

Mechanism

happy-dom's default document origin is http://localhost:3000/, so any relative-URL fetch that nothing intercepts resolves against that origin and leaves the process for real. No test file in the shard stubs fetch for this path — the request comes from the component graph under test, on the branch where the node does not carry the declared data pre-fetch array and the component therefore runs its own fetch.

Same defect class as #3339 (plugin-detail), #5225 (plugin-report) and #5280 (plugin-dashboard DatasetWidget), all closed. This is a new member of it, not a regression of those.

Why it is worth closing

Fix shape follows the closed siblings: give the component's own fetch path a stub (or author the data pre-fetch array on the nodes that do not need to exercise the fetching branch), so nothing in the file reaches the network.

Activity

  1. added theissue type on Aug 21, 2026
  2. os-zhuang commented on Aug 21, 2026

    @os-zhuang
    Contributor

    Triage: queued, type Task — a unit test making real outbound connections (4× ECONNREFUSED to 127.0.0.1:3000) is a latent flake whose verdict depends on whatever listens on that port, and its stack traces already caused one mis-filed card (#5421). Fix shape follows the three closed siblings (#3339 / #5225 / #5280): stub the component's fetch path or author the data pre-fetch array. Size/model suggestion: S, sonnet.


    Generated by Claude Code

  3. added a commit that references this issue on Aug 23, 2026
    e40b857
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions