Aman-Mittal commented on issue #377:
URL: 
https://github.com/apache/fineract-backoffice-ui/issues/377#issuecomment-5308035480

   ## Release scorecard — `0846def1`
   
   | Area | Status | Evidence | Blocking? |
   |---|---|---|---|
   | Version / release metadata | **FAILED** | `0.0.0`, propagates to 
`remoteEntry.json` and the SBOM; no release tags; no changelog | **Yes (V1)** |
   | Build | VERIFIED | `npm run build` exit 0, 44 s | No |
   | Lint | VERIFIED | `npm run lint:prune` exit 0 | No |
   | Format | VERIFIED | `npm run format:check` exit 0 | No |
   | i18n (mechanism) | VERIFIED | 1532 referenced keys, 0 missing | No |
   | i18n (locale completeness) | PARTIAL | hi/ko at 20.9%; English fallback 
confirmed | No |
   | Unit tests | VERIFIED | 1093/1093 + 2/2 | No |
   | Coverage | VERIFIED | 73.72% statements excl. generated client; 
security-critical files ≥90% | No |
   | E2E | VERIFIED | 325 passed; 8 failures attributed to contention, green 
serially | No |
   | E2E — two-factor | VERIFIED | 3 passed, dedicated stack | No |
   | RBAC | VERIFIED | 223/223 codes real; drift checker passes; 50 RBAC e2e 
cases incl. backend refusal | No |
   | Navigation authorization | VERIFIED | 119 entries, 104 gated, static 
equality with routes enforced in CI | No |
   | Action authorization | PARTIAL | 163 gating sites; 62 of 74 write controls 
gated; 7 ungated, all leading to a gated route | No |
   | API surface | VERIFIED | 142 services / 564 operations; manifest matches; 
spec identical to Fineract head | No |
   | GA gates | VERIFIED | 8/9, 0 blocking | No |
   | Dependency licensing (production) | VERIFIED | 26/26 Category A | No |
   | Dependency licensing (dev) | **NEEDS A DECISION** | 
`eslint-plugin-sonarjs` LGPL-3.0-only | **Yes (L1)** |
   | Dependency vulnerabilities | VERIFIED | production 0; dev 11, none 
shipped, all fixable | No |
   | ASF / RAT | VERIFIED | 706 approved, 0 unapproved; gate proved to block | 
No |
   | SBOM | VERIFIED (with limits) | CycloneDX 1.6, 23/932 components; no 
hashes — generator limitation, stated not fabricated | No |
   | CI/CD security | VERIFIED | all actions SHA-pinned; no 
`pull_request_target`; least privilege | No |
   | Accessibility | PARTIAL / one AA failure | axe passes on 4 screens; 
primary colour 3.15:1 vs 4.5:1 | No |
   | Functional coverage | VERIFIED | 27 areas, 333 routes, 0 TODOs, no dead 
routes | No |
   | Documentation | **FAILED** | no release docs; threat-model config table 
wrong; broken README link; stale copyright | **Yes (D1)** |
   | Deployment artifacts | **FAILED** | image builds, but serves the SPA shell 
for `/api/v1/*` | **Yes if a container ships** |
   | Breaking changes | VERIFIED | one, intended, with an opt-out | No |
   | Release hygiene | **FAILED** | no tags, no changelog, no RM process, no 
KEYS | **Yes (D1)** |
   
   ## E2E attribution — why 8 failures are not 8 defects
   
   The full suite was run on a **fresh database** against 
`apache/fineract:latest`:
   
   ```
   bash scripts/e2e-stack.sh --fresh                              → exit 0
   npx playwright test --project=mocked --project=backend         → 325 passed, 
8 failed, 4 did not run (16.1 m)
   ```
   
   This host has no `CI` env var, so Playwright used `fullyParallel` with 
default workers and `retries: 0`. CI sets `workers: 1`, `retries: 2`, and 
shards the mocked project four ways. Rather than assume, the failing specs were 
re-run the way CI runs them:
   
   ```
   npx playwright test --project=backend --workers=1 \
     e2e/loan-lifecycle.spec.ts e2e/loan-schedule-type.spec.ts \
     e2e/share-account-servicing.spec.ts e2e/teller-cash-management.spec.ts
                                                                  → 12 passed, 
exit 0
   
   npx playwright test --project=mocked --workers=1 e2e/accessibility.spec.ts
                                                                  → 3 passed, 
exit 0  (3.3 s/test vs 32–34 s under load)
   ```
   
   | Failure | Cause | Class |
   |---|---|---|
   | `loan-lifecycle` create/approve/disburse | select-popover option "outside 
of the viewport", retried 104× to a 120 s timeout | environment |
   | `loan-schedule-type` progressive round-trip | seeded product not visible 
within 20 s | environment |
   | `loan-schedule-type` badge | same popover signature, 150 retries | 
environment |
   | `share-account-servicing` full lifecycle | activate control never 
appeared, 240 s | environment |
   | `teller-cash-management` over-settlement | `ensureCashMappings` stayed on 
`…/create`; another spec created the mapping concurrently | test isolation 
under parallelism |
   | `accessibility` × 3 | axe `color-contrast` on a page in a transitional 
render state; all three also hit the 30 s test timeout | environment |
   
   **None of the eight is a product defect.** Two follow-ups fall out of it: 
`teller-cash-management.spec.ts` shares `ensureCashMappings` state and is not 
parallel-safe, and the accessibility gate is load-sensitive enough that it 
should not be the only AA check.
   
   ### But the contrast defect the noisy run named is real
   
   Under contention axe reported `fgColor #ffffff`, `bgColor #3498db`, 
`contrastRatio 3.15`, `expectedContrastRatio 4.5:1`. Those colours are not an 
artefact — they are the committed theme:
   
   ```scss
   /* src/styles/_ionic-theme.scss */
   --ion-color-primary: #3498db;
   --ion-color-primary-contrast: #ffffff;
   ```
   
   Computing the WCAG ratio from those two values gives **3.15:1**. The *test 
failures* were environmental and the *defect the test named* is real; both are 
true and neither cancels the other.


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