shivaansh0610-LUFFY opened a new pull request, #659:
URL: https://github.com/apache/fineract-backoffice-ui/pull/659

   ## What and why
   
   Determines, for issue #572, whether the `ng-untouched`/`ng-touched` NG0100 
shape (at `NgControlStatus_HostBindings`/`NgControlStatusGroup_HostBindings`) 
is a real application defect or a sampling artifact — it's the latter — and 
fixes the e2e fixture's wrong URL attribution that made the original report 
misleading.
   
   The change-detection fixture accumulated NG0100 errors for a whole test and 
printed `page.url()` only when it flushed, so a long multi-page journey blamed 
every error on wherever the test happened to end up. 
`teller-cash-management.spec.ts` visits the GL account and financial activity 
mapping forms early and finishes on a cashier transactions page, which is why 
those components were reported under that URL. Each error is now tagged with 
`page.url()` as it arrives instead.
   
   Also determines the open question of whether the 
`ng-untouched`/`ng-touched`/etc. NG0100 shape is an application defect: it is 
not. `exhaustiveCheckNoChangesInterval` (`@angular/core`) schedules its sweep 
on a plain `setTimeout`, decoupled from the zone-driven render scheduler apart 
from a best-effort `pendingRenderTaskId`/`runningTick` guard, so it can 
occasionally diff a live control-status getter against a stale render during 
that gap. The ordinary `checkNoChanges` pass Angular always pairs with a real 
tick in dev mode has no such gap and cannot produce this. It also is not 
reactive-forms-specific, since `NgControlStatus` attaches to `ngModel` controls 
too.
   
   Narrows what `ENFORCE_CD_ERRORS` treats as a failure to exclude this known 
artifact (still reported via `console.warn`) rather than treating it as a 
defect to fix in the components themselves. Flipping `ENFORCE_CD_ERRORS` to the 
default is out of scope — the issue ties that to the companion two-way-binding 
issue as well.
   
   Closes #572
   
   ## Verification
   
   - Read both call sites of `checkNoChangesInternal` in `@angular/core` 
(`core.mjs`, `_debug_node-chunk.mjs`) to confirm the interval sweep is the only 
path that can observe this kind of drift; the per-tick `checkNoChanges` in 
`ApplicationRef.tickImpl` has no time gap to drift in.
   - Stress-tested `gl-account-form` directly against the `mocked` project — 40 
rapid fill/select cycles through both `ion-select` popovers and every `ngModel` 
field, the same interaction `teller-cash-management.spec.ts` performs once — 
and could not reproduce the NG0100 shape, consistent with a rare 
scheduler-timing race rather than a deterministic template bug.
   - `npm run typecheck:e2e` — clean.
   - `npm run format:check` — clean.
   - `npm run test:unit` — 1812/1816 passing; the 4 failures are pre-existing 
`TestBed` hook timeouts in unrelated components (`share-dividend-form`, 
`working-capital-loan`), untouched by this change.
   - `npx playwright test --project=mocked e2e/functional-coverage.spec.ts 
e2e/login.spec.ts e2e/client.spec.ts` — 43/43 passing. Covers the GL-account 
and financial-activity-mapping form creation flows directly, plus the login 
flow every test in the suite exercises through this fixture.
   - Did not run the full 188-test `mocked` project to completion locally 
(environment time constraints); the subset above is the part of the suite this 
change can affect. No `backend` project run — no backend-dependent behavior 
changed.
   
   ## Screenshots
   
   Not applicable — this changes e2e test infrastructure only, no UI or 
user-visible behavior.
   
   ## AI assistance (optional)
   
   - Tool / model:
   - Harness / workflow:
   
   ## Checklist
   
   - [x] I did not hand-edit generated files under `src/app/api/`.
   - [x] New component or service code uses the adapter boundary in 
`src/app/core/adapters/` instead of direct browser globals or imperative 
third-party APIs. *(N/A — no component or service code changed)*
   - [x] User-facing strings use translation keys. *(N/A — no user-facing 
strings added)*
   - [x] I added or updated tests appropriate to this change, or explained why 
tests were not needed. *(This change is to the shared e2e test fixture itself; 
verified by running it against the affected specs — see Verification.)*
   - [x] UI workflow changes include suitable e2e coverage, including 
real-backend testing where relevant. *(N/A — no UI workflow changed)*
   - [x] Commits are signed — see [Commit 
Signing](CONTRIBUTING.md#commit-signing) in CONTRIBUTING.md.
   - [x] I followed the [AI-assisted contributions 
guidance](CONTRIBUTING.md#ai-assisted-contributions).
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to