aglinxinyuan opened a new issue, #7971: URL: https://github.com/apache/texera/issues/7971
### Task Summary `frontend/src/app/workspace/component/result-panel/result-table-frame/result-table-frame.component.ts` sits at 97.3% — 1 missed and 4 partial of 185 lines. Small, but the residue includes a real hole and a genuinely reachable path the type signature denies. Two things worth knowing before writing anything: 1. **An existing test's name does not match its body.** One case claims to exercise the empty-result guard while actually exercising the `operatorId` guard, so the empty-result path is unpinned despite appearing covered. Separate them. 2. **`IcebergDocument.getTableStatistics` emits ISO date strings for `Timestamp` column min/max**, contradicting the frontend's `Record<string, Record<string, number>>`. Reaching that path needs two `as unknown as number` casts — a bare `as number` is rejected, and the builder typechecks every spec. Put the justification in a comment on the test, or a reviewer will read it as a coverage hack. Structural limits: - **The file cannot exceed 184/185 by any test-only change.** `previousStr = previous !== undefined ? previous.toFixed(2) : currentStr` runs only inside `typeof current === "number" && typeof previous === "number"`, so the `: currentStr` arm is dead. Closing it means deleting the vacuous guard, which is a production edit. - A single-sided `previous.toLocaleString()` → `String(previous)` mutation is observable only if the *same* column's stat is non-numeric in one snapshot and a number ≥ 1000 in the other — a mid-run type flip the backend does not produce. Better left unpinned than cemented. Tooling notes, each of which has cost time in this repo: - **`ng test --coverage` writes no lcov if any test fails**, and it lands at `frontend/coverage/gui/lcov.info` — note the `gui` subdirectory. Measure only from a green run. - **`frontend/junit.xml` is regenerated every run and is not gitignored**; committing it fails the license-header check. - **A fresh worktree has no `frontend/node_modules`.** Do a real install (`node .yarn/releases/yarn-4.14.1.cjs install --immutable --inline-builds`, ~40s off the global Berry cache) rather than junctioning it from the main checkout — a later recursive delete follows that junction and empties the main checkout's dependencies, which has happened twice here. One defect is worth an issue of its own and **should not be pinned**: an empty fetched page returns at the line-424 guard before `isLoadingResult = false` at line 428, so the `nz-table` spinner never clears for an operator that produced zero rows. ### Task Type - [ ] Refactor / Cleanup - [ ] DevOps / Deployment / CI - [x] Testing / QA - [ ] Documentation - [ ] Performance - [ ] 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]
