Repository navigation
test(ui): cover app-shell dialogs, router guards, dialog gating, VM navigation/toggles - #425
Conversation
…avigation/toggles Extracts AppState.shouldShow*() dialog-selection predicates from GraphDialogLayer. Adds WikiSubdirFixDialog, FlashcardsScreen, ScreenRouter guard (Robolectric), GraphDialogLayerLogic (commonTest), and StelekitViewModel navigation/toggle tests. Documents deferred files and plan deviations in validation.md.
JVM Load Benchmark (Desktop)Synthetic in-memory benchmark measuring load performance for the desktop (JVM) app.
Flamegraphs (this PR)**Allocation** — object allocation pressure (JDBC/SQLite churn)Alloc flamegraph not available CPU — method-level hotspots by on-CPU time CPU flamegraph not available Top allocation hotspots (this PR)`34.8%` byte[]_[k] `6.9%` java.lang.String_[k] `5.5%` int[]_[k] `5.4%` java.lang.Object[]_[k] `5.1%` java.util.LinkedHashMap$Entry_[k]Top CPU hotspots (this PR)`97.5%` /usr/lib/x86_64-linux-gnu/libc.so.6 `0.7%` /tmp/sqlite-3.51.3.0-7ddb2cb6-be06-4e50-b2c2-3b323a0e8d13-libsqlitejdbc.so `0.5%` fsync `0.3%` __libc_pwrite `0.1%` pthread_cond_signal |
Android Load BenchmarkInstrumented benchmark on an API 30 x86_64 emulator — 500-page synthetic graph. Comparing Graph Load
Interactive Write Latency (during Phase 3)
SAF I/O Overhead (ContentProvider vs direct File read)Measures Binder IPC cost added by ContentResolver per readFile() call.
|
Without registration Bazel's business_tests suite never ran them and AllBusinessTestsCompletenessTest failed in CI.
|
Per the backlog fallback, shipping as a draft for human review. AC8 stays marked |
… concerns AC1-4, AC6, AC7, AC9 satisfied; AC5 cap clause and AC8 failed per owner decisions.
|
Tracked by Stapler Squad backlog item: ssq://onyx.staplerhome.internal/backlog/v1/bl_01M4WBVTXRVSRYBF12131ES3D1 |
Summary
Raises coverage of the
ui/app shell (backlog item f344219b): extracts dialog-selection predicates fromGraphDialogLayer.ktand adds headless tests for dialogs, router guards, flashcards, and ViewModel navigation/UI toggles.What Changed
GraphDialogLayer.kt:internal fun AppState.shouldShow*()predicates (behavior-preserving, used by hosts)WikiSubdirFixDialogTest,FlashcardsScreenTest,ScreenRouterGuardTest,GraphDialogLayerHostsTestGraphDialogLayerLogicTestStelekitViewModelNavigationTest,StelekitViewModelUiToggleTestproject_plans/ui-shell-test-coverage/plan, research, validation (latest commit56e3a3bdrecords the sdd:6-verify re-run)Acceptance criteria
Passing (7): AC1 WikiSubdirFixDialogTest, AC2 FlashcardsScreenTest, AC3 ScreenRouterGuardTest, AC4 predicates + GraphDialogLayerLogicTest, AC6 UiToggle test, AC7 headless (no X11), AC9 deferred files documented.
Open (2) — not met as written:
StelekitViewModelhas no history cap; adding one is a product change. goBack/goForward boundaries are covered.diffCoverage --fail-under 80gate was accepted.Both are recorded as owner decisions in
project_plans/ui-shell-test-coverage/validation.mdlines 123–161. The backlog AC text was not reworded./backlog/reviewdid not record a review this session:request_reviewrejects while AC5 and AC8 are notpass. A human needs to review and reconcile those two criteria.Test plan
:kmp:testDebugUnitTest— WikiSubdirFixDialogTest 6, FlashcardsScreenTest 4, ScreenRouterGuardTest 6, GraphDialogLayerHostsTest 6, GraphDialogLayerLogicTest 15: 0 failures:kmp:jvmTest— StelekitViewModelNavigationTest 7, StelekitViewModelUiToggleTest 6: 0 failures