Skip to content

test(groupware): wait for contacts to render before deleting - #508

Merged
veryCrunchy merged 2 commits into
mainfrom
fix/groupware-contacts-scene-test-flake
Oct 15, 2026
Merged

veryCrunchy merged 2 commits into
mainfrom
fix/groupware-contacts-scene-test-flake

Conversation

@veryCrunchy

Copy link
Copy Markdown
Member

Outcome

Test-only change with no user-visible effect. GroupwareContactsMutationSceneTest no longer fails on a slow or loaded machine.

Before the contact list renders, the screen makes six sequential fake requests, each delayed 20 ms. The tests acted after a fixed 10 frames of about 16 ms. Under load, the first click ran before the "Synthetic contact" row existed ("No rendered native control labeled 'Synthetic contact'"). The second test had the same race: it clicked "Create contact" before the control was enabled. Raising the fake delay to 40 ms locally reproduced both failures every time. Running the class with the test classes changed in #499 passed, so this is timing, not test order or shared state.

Both tests now wait with the scene driver's existing bounded settleUntil (5 s cap) for the state each step needs:

  • the rendered contact row;
  • an enabled "Create contact" control;
  • the reconciled end state after create and delete, followed by one extra frame so a duplicate mutation is still caught.

Fixed frame repeats are removed. Assertions are unchanged, and no sleeps or retries were added. Other scene tests with real-time waits measure intended UI timing (double-click, debounce, animation), so they are unchanged.

Verification

  • Every check relevant to the changed scope passes, or each unrun check is listed below with a reason

  • bash tools/check-repository.sh passes

  • A new changes/unreleased/ fragment records the change

  • No credentials, private server data, machine-local paths, or generated output are included

  • :ui:desktopTest --rerun --tests '*GroupwareContactsMutationSceneTest': 10 of 10 runs passed. Both tests also passed 2 of 2 with the fake delay temporarily raised to 40 ms (not committed).

  • Full :ui:desktopTest :androidApp:testDebugUnitTest (both executed): desktop 3862 tests, 0 failures, 69 skipped; Android 1167 tests, 0 failures. Two more full :ui:desktopTest runs: 0 failures each.

  • bash tools/check-kotlin-architecture.sh and bash tools/check-repository.sh pass.

  • Local runs on Windows with JDK 21.

Compatibility and risk

Desktop test code only. No production, platform, or server behavior changes.

Visual changes

Not applicable.

The contacts mutation scene tests acted after a fixed number of 16 ms
frames while the synthetic store and transport answer each of six
sequential requests after 20 ms. On a loaded machine the first click ran
before the list (or the writable address book) had rendered, and the
post-mutation assertions relied on forty fixed frames.

Wait with the bounded settleUntil helper for the observable state each
step needs: the contact row, an enabled Create contact control, and the
reconciled terminal state after create and delete. Each wait is capped
at 5 seconds and the existing assertions are unchanged.
@obiente-cloud
obiente-cloud Bot temporarily deployed to Obiente Preview / PR #508 / NC Native October 15, 2026 00:38 Destroyed
@obiente-cloud

obiente-cloud Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Obiente preview

NC Native · 2c585f90cd27 · Removed

View preview status

View in Obiente

Obiente updates this comment as the preview changes.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-15T00:40:50.161076Z 2c585f9 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@veryCrunchy
veryCrunchy merged commit 97c8a2e into main Oct 15, 2026
4 of 5 checks passed

This branch was successfully deployed

No deployments
Obiente Preview / PR #508 / NC Native — 2c585f90 Deployed Oct 15, 2026 by obiente-cloud[bot]
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