Skip to content

Raise testem's disconnect timeout; trim DEFECTS.md to what is open - #166

Merged
roncodes merged 1 commit into
test/coverage-campaignfrom
fix/testem-disconnect-timeout
Aug 25, 2026
Merged

roncodes merged 1 commit into
test/coverage-campaignfrom
fix/testem-disconnect-timeout

Conversation

@roncodes

Copy link
Copy Markdown
Member

Two things: a CI-breaking regression from my own earlier fix, and the DEFECTS.md cleanup.

1. The run exits 1 even though every test passes

The first full run after #164 and #165 merged:

# tests 5197
# pass  5196
# fail  1

not ok 5197 Chrome - error
  Error: Browser timeout exceeded: 10s

All 5196 real tests passed and the coverage report was written. The run failed anyway.

This is a regression from #165's fix. Testem.afterTests makes testem wait for the coverage POST — that is the entire point of it, and it is what stopped the uploads being truncated. But testem's browser_disconnect_timeout defaults to 10 seconds, and the payload is several megabytes once forceModulesToBeLoaded() has run. My verification run at 5130 tests was under the threshold; #164's added code pushed it over.

It would have failed CI on every run, with a message that names neither coverage nor the upload.

Fix: browser_disconnect_timeout: 120 in testem.js, alongside the existing browser_start_timeout: 120. That timeout exists to catch a hung browser; waiting on a deliberate, bounded upload is not that.

2. DEFECTS.md: 746 lines → 140

Seventeen of nineteen entries were fixed, and fixed entries are noise in a worklist. Removed, along with the appendix mapping an old numbering scheme nothing uses any more and the kickoff brief for #15 — which #164 has now implemented.

The full file is preserved at c9bc486 and linked from the header, so anything in the repo citing an old defect number still resolves. I verified the link actually returns the file rather than trusting the path — the first version pointed at the monorepo path and 404'd, since the remote is the standalone repo.

What is left:

  • One open entry — small styling updates for tag input component, and added param to adj… #18, the ±1 branch wobble between identical runs.
  • The settled list — behaviour that is deliberate and has been "fixed" wrongly before: sticky columns, the resource panel's unwired save task, the removed panel callbacks, custom-fields staleness.
  • Reference material that is still forward-looking — why the remaining coverage gaps are where they are, and the habits worth keeping.

One thing added rather than removed

A short section on the trade coverage collection is balanced on, because the two entries it replaces were the same problem pulling in opposite directions:

  • Post from QUnit.done → nothing waits → the upload truncates and no report is written, silently (upstream #420).
  • Post from Testem.afterTests → testem waits → its disconnect timeout must outlast the upload, or you get this PR's failure.

The payload size is the real variable, and forceModulesToBeLoaded(filterFunction) is the lever nobody has pulled: we currently force-load and transmit coverage for workspace siblings like @fleetbase/ember-core that scripts/check-coverage.js then discards.

Verification

Full run before this change: 5196 pass, 1 error, exit 1. A confirming run with the timeout raised is in progress and I will post its result here.

… still open

TWO THINGS.

1. The first full run after #164 and #165 merged exited 1 — with all 5196 tests
   passing and coverage written:

     not ok 5197 Chrome - error
       Error: Browser timeout exceeded: 10s

   This is a regression from #16's own fix. Testem.afterTests makes testem WAIT
   for the coverage POST, which is the whole point of it, but testem's
   browser_disconnect_timeout defaults to 10s and the payload is several
   megabytes once forceModulesToBeLoaded() has run. The verification run at 5130
   tests was clean; #164's added code pushed the upload past the threshold. It
   would have failed CI on every run, with a message naming neither coverage nor
   the upload.

   browser_disconnect_timeout: 120, alongside the existing browser_start_timeout.
   The timeout is there to catch a hung browser; waiting on a deliberate,
   bounded upload is not that.

2. DEFECTS.md: 746 lines -> 140. Seventeen of nineteen entries were fixed and
   have been removed, along with the appendix mapping a numbering scheme nothing
   uses any more and the kickoff brief for #15, which #164 has now implemented.

   The full file is preserved at c9bc486 and linked from the header, so anything
   citing an old defect number still resolves. Verified the link returns the file
   (50,371 bytes) rather than trusting the path — the first version of it pointed
   at the monorepo path and 404'd, since the remote is the standalone repo.

   What is left is a worklist rather than a changelog: one open entry (#18, the
   +/-1 branch wobble), the settled list that stops fixed-by-design behaviour
   being "fixed" again, and the reference material that is still forward-looking.

   Added in place of the removed #16/#19 entries: a short section on the trade
   coverage collection is balanced on, because those two were the same problem
   pulling in opposite directions. Post from QUnit.done and nothing waits, so the
   upload truncates silently. Post from Testem.afterTests and testem waits, so
   its disconnect timeout has to outlast the upload. The payload size is the real
   variable, and forceModulesToBeLoaded(filterFunction) is the lever nobody has
   pulled yet — we currently transmit coverage for workspace siblings that
   check-coverage.js then discards.
@roncodes
roncodes merged commit dc418e6 into test/coverage-campaign Aug 25, 2026
@roncodes
roncodes deleted the fix/testem-disconnect-timeout branch August 25, 2026 10:05
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