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]
