Aman-Mittal opened a new issue, #567:
URL: https://github.com/apache/fineract-backoffice-ui/issues/567

   Three findings from working through the suppressions baseline and the ADR 
0005 migration. All are addressed in the PR that closes this, except where 
noted.
   
   ## 1. `unicorn/number-literal-case` is unsatisfiable
   
   The rule is configured with the default `hexadecimalValue: 'uppercase'`. 
Prettier rewrites hex digits to lowercase, and `npm run format:check` gates CI. 
So the three hex literals in 
`src/app/core/interceptors/correlation-id.interceptor.ts` could not be fixed by 
anyone — running `--fix` and then Prettier returns the file to the state the 
rule rejects.
   
   They therefore sat in `eslint-suppressions.json` permanently, looking like 
ordinary debt rather than a rule fighting the formatter.
   
   Configuring the rule to `lowercase` clears all three with no source change, 
and the rule keeps its value: an uppercase `0X` prefix and a `1E3` exponent are 
both still reported.
   
   ## 2. Fourteen `unicorn/no-array-sort` entries are blocked on the browser 
floor, not on effort
   
   The rule wants `Array#toSorted`. `tsconfig.json` targets ES2022, and 
browserslist resolves down to **Chrome 109** — one version below where 
`toSorted` shipped (Chrome 110, Safari 16, Firefox 115). Raising the lib would 
compile code that throws on a browser the project still supports.
   
   `src/app/features/security/roles/role-form.component.ts` already documents 
this with an inline disable. These entries should stay until the browser floor 
moves, and it is worth recording why so the next person does not spend the same 
hour rediscovering it.
   
   Ten other unicorn entries in the baseline are ordinary and fixable: `isNaN`, 
a dead `import {} from '@angular/router'`, a truthiness ternary, positional 
child traversal, and three object-literal parameter defaults.
   
   ## 3. The UI migration has no per-call-site regression cover
   
   Of 47 components migrated off `ion-button` in one batch, 36 have a sibling 
spec — and almost none of those specs assert anything about a button. Only two 
test files in the entire `src/app/features` tree mention `ion-button` or 
`app-button`. A full-suite pass proves the components still *construct*, not 
that their actions, accessible names, navigation or permission guards survived 
a template rewrite.
   
   The dropped `*appHasPermission` is the failure that matters: it shows an 
action to someone who may not be allowed to perform it, and nothing in the 
suite would notice.
   
   Two gaps worth closing:
   
   - **`type` is only enforced at render time.** It is a required signal input, 
so a call site that omits it throws NG0950 — but only when that screen is 
opened, which for most list screens means in front of a user rather than in CI. 
A static scan of the templates covers the whole tree at once.
   - **At least one migrated screen needs behavioural cover** for what a 
rewrite can silently drop, with the assertions confirmed against deliberate 
mutations rather than assumed to work.
   
   ## Also noted
   
   `e2e/accessibility.spec.ts`'s four `aria-allowed-attr` entries are collected 
behind one constant, per #514. The upstream report that issue asks for is still 
outstanding and is not part of this work.
   
   Two things future migrations should expect, both hit here: build checks 
keyed to a vendor tag (`check-icons.mjs`, `check-a11y-names.mjs`) silently stop 
covering a call site the moment it migrates, and `npx eslint <file>` reads 
`eslint-suppressions.json` by default — so a bare run reports a file as clean 
when it is not.
   


-- 
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