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]