Stop writing undefined time estimates into the board list cache
What does this MR do and why?
Opening a card on an issue board logs Missing field 'humanTimeEstimate' while writing result in the browser console. Nine board feature specs show it, and every board in production does too.
How it happens:
board_content.vuelistens towork-item-updatedfrom the drawer and maps the work item widgets onto the cached board issue withmapWorkItemWidgetsToIssuableFields.- The board issue fragment selected
humanTimeEstimateandhumanTotalTimeSpent. Nothing in the boards code reads them; cards rendertimeEstimate. - Commit 3b47290e moved time tracking out of the work item detail widgets fragment. The detail query still selects the widget
type, so the mapper found aTIME_TRACKINGwidget with no fields and wroteundefinedinto the cache. Apollo logs a missing field for everyundefinedwrite.
What changes:
- Commit 1 removes
humanTimeEstimateandhumanTotalTimeSpentfrom the board issue fragment, the optimistic responses inapp/assets/javascripts/boards/constants.jsandee/app/assets/javascripts/boards/constants.js, and the Jest mock data. - Commit 2 makes the mapper return early when a widget carries no value for the mapped field. The list keeps the value it already has. This also prevents a TypeError in the assignees and labels branch when the widget has no
nodes, which happens when theworkItemFeaturesFieldfeature flag skips the inline widget fragments. - New Jest examples in
spec/frontend/work_items/list/utils_spec.jscover both behaviours and the board list shape.
References
- Part of section D of #628901
- Console check and baseline allowlist MR that surfaced it: !255207 (closed)
- Reveal pipeline jobs showing the error: https://gitlab.com/gitlab-org/gitlab/-/jobs/16462296250 and https://gitlab.com/gitlab-org/gitlab/-/jobs/16462296252
- Commit that moved time tracking out of the detail widgets fragment: 3b47290e
- Commit that introduced the humanTimeEstimate mapping: c1d49316
Screenshots or screen recordings
The board looks the same before and after. This fix only removes a console error that appears when the drawer updates a card.
Both screenshots come from the same temporary feature spec: open a project issue board, click a card, add the Bug label in the drawer, and close the drawer. In both, the card receives the Bug label and appears in the Bug list.
| Before (463bd8e9) | After (b73e76d5) |
|---|---|
![]() |
![]() |
Browser console during the same run
| Run | Missing field 'humanTimeEstimate' while writing result |
|---|---|
| Before (463bd8e9) | 4 times |
| After (b73e76d5) | 0 times |
Both runs showed only unrelated network failures (net::ERR_CONNECTION_RESET and net::ERR_CONNECTION_REFUSED from gravatar and snowplow), which are normal in the test environment.
How to set up and validate locally
- Open a project issue board in GDK with the browser console open.
- Click a card to open the drawer.
- On master, the console shows
Missing field 'humanTimeEstimate' while writing result. - On this branch, the error does not appear.
- Edit a label or the weight in the drawer and confirm the card updates.
- Run
yarn jest spec/frontend/work_items/list/utils_spec.js spec/frontend/boards.
MR acceptance checklist
This MR was evaluated against the acceptance checklist.

