aglinxinyuan opened a new pull request, #7992:
URL: https://github.com/apache/texera/pull/7992
### What changes were proposed in this PR?
Three small frontend components, measured from lcov with the same spec
filter on both sides.
| File | Codecov | lcov detail |
|---|---|---|
| `time-travel.component.ts` | 92.3% → **100%** | branches 20/22 → 22/22;
functions 17/18 → 18/18 |
| `feedback.component.ts` | 85.2% → **100%** | branches 14/17 → 17/17;
functions 8/11 → 11/11 |
| `feedback.component.html` | 83.3% → **100%** | branches 2/4 → 4/4;
**functions 0/2 → 2/2** |
| `repeat-dnd.component.html` | 86.4% → **95.5%** | one arm left
deliberately — see below |
| `repeat-dnd.component.ts` (incidental) | 90.9% → **100%** | branches 17/18
→ 18/18 |
**+14 fully-covered lines, +9 branch arms, +7 functions.**
The template's function counter is the one to notice:
`feedback.component.html` was at **zero of two functions covered** behind an
83% line figure. That is the fifth time in this campaign the function counter
found what the line counter hid. `time-travel.component.ts`'s zero-hit lines
84-88 were the entire `ngOnInit` timer lambda body.
**`port-property-edit-frame.component.ts` was in scope and is absent.** It
is worth exactly zero: two of its three residual lines are dead Quill config
and the third is unreachable in practice. No tests were added there and no
mutations run.
### A production defect found while assessing it
Chasing those two Quill lines turned up a real bug rather than coverage: the
port-name editor's keyboard bindings use `key: 13`, which is **Quill 1 syntax
that Quill 2 never dispatches**. So pressing Enter in the port-name editor
inserts a newline into the shared display name instead of closing the editor.
Reported, not pinned — pinning current behaviour would cement it.
### One arm left uncovered on purpose
`repeat-dnd.component.html` line 48 is the **remove** button's
`[disabled]="field.templateOptions?.disabled"`, and issue **#7431** records
that the enclosing `*ngFor` shadows the outer `field`, so it never disables.
That arm is deliberately not pinned. The assertion added in that spec is on the
**add** button, and it carries a comment explaining why an absent
`templateOptions` object must not read as disabled.
### Verification
28 mutations, **24 killed, 4 recorded.**
The first draft's headline was false: it claimed "survivors: NONE, every one
of the 14 new tests proven by a mutation actually applied and run". **Eight
mutants survived it** — seven found by review plus one found here (deleting an
`[nzLoading]` binding). All eight now die.
Its survivor-to-mutation mapping was also wrong in one place: two separate
mutations had been given the same number, so a kill was credited to the wrong
row.
The four recorded non-kills are: the #7431 arm above (refused), an
equivalent mutant (`[nzData]="[...feedbackList]"` → `[nzData]="feedbackList"` —
the spread produces an equal array), and two entries covering
`port-property-edit-frame`, where no tests were added.
One further correction worth making: `feedback.component.html` reaching
24/24 is **not** a quality claim on its own. At 24/24 the file is fully
*executed*; what makes it constrained is the mutations, not the percentage.
No production file is touched. The worktree used a real yarn install rather
than a `node_modules` junction.
### Any related issues, documentation, discussions?
Closes #7990
### How was this PR tested?
```
npx ng test --watch=false --include="**/time-travel.component.spec.ts"
--include="**/feedback.component.spec.ts"
--include="**/repeat-dnd.component.spec.ts"
```
```
Test Files 3 passed (3)
```
`yarn format:ci` passes. `frontend/junit.xml` and `frontend/coverage/` are
regenerated by every run and are not committed.
### Was this PR authored or co-authored using generative AI tooling?
Generated-by: Claude Code (Opus 5)
--
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]