The GitHub Actions job "Required Checks" on texera.git/main has failed. Run started by GitHub user github-merge-queue[bot] (triggered by github-merge-queue[bot]).
Head commit for run: f13f175c801ff62178ab1149f07b93b34509fa45 / Xinyuan Lin <[email protected]> test(frontend): cover the model-detail page, admin settings and heatmap scoring (#8290) ### What changes were proposed in this PR? Four existing frontend specs extended. **+63 fully-covered lines and +15 branch arms** — 916/978 → 979/978 across the five files, four of which reach 100%. | File | Codecov fully-covered | Branch arms | |---|---|---| | `model-detail.component.ts` | 197/228 → **227/228** | 90/100 → **99/100** | | `model-detail.component.html` | 203/221 → **221/221** | 26/30 → **30/30** | | `admin-settings.component.html` | 204/214 → **214/214** | 34/34 | | `heatmap-scoring.ts` | 50/54 → **54/54** | 40/42 → **42/42** | | `dataset-detail.component.html` | 262/263 → **263/263** | 32/32 | `model-detail.component.ts` goes from 31 missed lines to 1. The plain line-hit metric moves +50 against Codecov's +63, because thirteen of the gained lines were already executed and flip only by completing a branch arm — the two numbers are not interchangeable and both are given. This is newly-landed Models-page code: `model-detail.component.ts` had **grown by 13 missed lines** since the previous coverage scan, and `heatmap-scoring.ts` is a new file. `model-detail.component.spec.ts` goes 48 → 67 tests. ### Angular templates are real, countable coverage Worth stating because it is easy to assume otherwise: `.html` templates appear in `lcov.info` as their **own `SF:` records** — v8 coverage remapped through the AOT source map — and each "line" is a generated listener or creation block. **28 of the 63 lines here are in templates.** A single-spec run shows ten such records. ### Three DOM-query traps, each hit and solved - **`model-detail.component.html` has two `<texera-markdown-description>` instances** (Model Card and Settings), and `nz-tabs` keeps already-activated panes alive. `query(By.directive(MarkdownDescriptionComponent))` therefore returns the *non-editable* one and a `descriptionChange` emit goes nowhere. The tests select on `.editable` rather than taking the first match. Same class of trap for `nz-select` — two on Settings plus one on Versions & Files — so those are indexed. - **`nz-tooltip` needs an animations module.** Opening one instantiates an overlay host carrying `[@zoomBigMotion]`, which throws without it. The new `admin-settings` describe has its own TestBed with `NoopAnimationsModule`. - **Tooltip content renders into the CDK overlay on `document.body`**, not `fixture.nativeElement`, so those assertions read from `document.body`. That describe also drains the `assets/` requests `nz-icon` lazily fetches before `http.verify()`. `onSideResize` assigns inside a `requestAnimationFrame` callback, so its test awaits a frame rather than using `fakeAsync` — jsdom runs rAF callbacks FIFO, so the component's fires first. ### Verification **49 mutants, zero survivors** — 36 re-derived from scratch plus 13 more. Every kill is credited to the exact test that failed. The only two multi-killers are disclosed, and each is second-killed by another *new* test rather than by pre-existing collateral. Three mutants survive and are reported plainly as genuinely equivalent, with reasoning, rather than papered over. Measured with the **full** frontend suite in one command — no name filter and no `--include` at all — so there is no filter-attribution risk. `LF` is unchanged on all five files, confirming zero production drift. The lcov landed at `frontend/coverage/gui/lcov.info`; both metrics were parsed with a script applying Codecov's rule directly. **The repair pass moved coverage by exactly zero** on every one of the five files, verified as a separate builder-final → repair-final parse. The builder's +63 stands and reproduced number for number, including the one file it did not fully close. The repair bought mutation strength only, and that is stated rather than sold as coverage. ### Deliberately not included `model-detail.component.ts:245` remains partial — an unreachable arm. `dataset-detail.component.html` contributes 1 line and was nearly dropped: its spec has three top-level describes with different helper names and render helpers, so appending at the end of the file does not compile. `yarn format:ci` passes — the inserted blocks initially failed `prettier --check`, which is a CI step, so that was fixed rather than left. `frontend/junit.xml` is regenerated by every run, is not gitignored, and is not committed. No production file is touched. ### Any related issues, documentation, discussions? Closes #8289 ### How was this PR tested? ``` npx ng test --watch=false --include="**/model-detail.component.spec.ts" --include="**/admin-settings.component.spec.ts" --include="**/heatmap-scoring.spec.ts" --include="**/dataset-detail.component.spec.ts" ``` ``` Test Files 4 passed (4) ``` Re-run after rebasing onto current `main`. ### Was this PR authored or co-authored using generative AI tooling? Generated-by: Claude Code (Opus 5) --------- Signed-off-by: Xinyuan Lin <[email protected]> Co-authored-by: Copilot Autofix powered by AI <[email protected]> Report URL: https://github.com/apache/texera/actions/runs/33411788845 With regards, GitHub Actions via GitBox
