[ 
https://issues.apache.org/jira/browse/FLINK-40117?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Purushottam Sinha updated FLINK-40117:
--------------------------------------
    Description: 
Problem                                                                         
                                                                                
                                               
FLINK-40035 (PR apache/flink#28610) introduced the Vitest test infra for 
flink-runtime-web/web-dashboard — jsdom, the @angular/build:unit-test builder, 
tsconfig.spec.json, and src/test-setup.ts with the ng-zorro/CDK stubs 
(matchMedia, ResizeObserver, IntersectionObserver). That PR only added smoke 
specs for 3 components: the Overview statistic cards, the Task Manager list, 
and the Job Exceptions view. Every other page in the dashboard still has zero 
automated coverage and relies on manual click-through during framework 
upgrades.                                                                       
             
                                                                                
                                                                                
                                                 
Evidence                                                                        
                                                                                
                                               
  - Specs exist only for: overview/statistic, task-manager/list, job/exceptions 
                                                                                
                                                 
  - 11 sibling views have no *.spec.ts: job/overview, job/checkpoints, 
job/timeline, job/dataskew, job/rescales, job/configuration, 
task-manager/metrics, task-manager/logs, application/overview,               
  application/exceptions, job-manager/metrics                                   
                                                                                
                                                 
  - ci-check already runs test:ci in the Maven build, so a new spec needs no 
extra CI wiring                                                                 
                                                    
                                                                                
                                                                                
                                                 
Proposed fix                                                                    
                                                                                
                                               
  - Add one smoke spec per view above: component renders, key bindings populate 
from a mocked service response                                                  
                                                 
  - Order: job/overview (DAG graph) and job/checkpoints first, then 
job/timeline + application/*, then the remaining task-manager/job-manager 
sub-pages                                                          
  - Reuse the TestBed.configureTestingModule + useValue + vi.fn() mocking 
pattern from the 3 existing specs                                               
                                                       
  - For lazy ng-zorro tabs, call the component method directly (e.g. 
navigateTo(...)) instead of clicking through the DOM, per FLINK-40035's review 
fix                                                          
                                                                                
                                                                                
                                                 
Acceptance                                                                      
                                                                                
                                               
  - npm run test:ci gains one passing spec per prioritized view, starting with 
job/overview and job/checkpoints                                                
                                                  
  - Suite runtime stays low enough not to threaten ci-check's gate on the Maven 
build                                                                           
                                                 
  - New specs are colocated and named *.component.spec.ts, matching FLINK-40035

  was:
Problem                                                                         
                                                                                
                                               
FLINK-40035 (PR apache/flink#28610) introduced the Vitest test infra for 
flink-runtime-web/web-dashboard — jsdom, the @angular/build:unit-test builder, 
tsconfig.spec.json, and src/test-setup.ts with the ng-zorro/CDK stubs 
(matchMedia, ResizeObserver, IntersectionObserver). That PR only added smoke 
specs for 3 components: the Overview statistic cards, the Task Manager list, 
and the Job Exceptions view. Every other page in the dashboard — including the 
main job detail page with the DAG graph, checkpoints, timeline, and the 
application views — still has zero automated coverage. Today the only guardrail 
for those views during framework upgrades (Angular, ng-zorro, monaco-editor, 
etc.) is eslint + a successful production build + manual click-through, which 
is exactly the gap FLINK-40035 was opened to close. Since the infra now exists, 
extending coverage is low-effort per view and meaningfully reduces regression 
risk on the next Angular/dependency bump.                                       
                               
                                                                                
                                                                                
                                                 Evidence                       
                                                                                
                                                                                
                
  - Specs that exist today: src/app/pages/overview/statistic/*.spec.ts, 
src/app/pages/task-manager/list/*.spec.ts, 
src/app/pages/job/exceptions/*.spec.ts                                          
              
  - No *.spec.ts files exist under: job/overview (job detail + DAG graph), 
job/checkpoints, job/timeline, job/dataskew, job/rescales, job/configuration, 
task-manager/metrics, task-manager/logs, application/overview, 
application/exceptions, job-manager/metrics, submit (job submission page)       
                                                                                
                         
  - ci-check already runs test:ci as part of the Maven frontend build 
(FLINK-40035), so any new spec here is automatically wired into CI with no 
additional plumbing                                             
                                                                                
                                                                                
                                                 
Proposed fix                                                                    
                                                                                
                                               
  - Add smoke-level specs (component renders, key data bindings populate, 
primary interaction like a tab switch or row click doesn't throw) for the 
un-tested views listed above                                 
  - Prioritize by traffic/risk: job/overview (DAG graph rendering is the most 
fragile part of past Angular upgrades) and job/checkpoints first, then 
job/timeline and the application/* views, then the remaining 
task-manager/job-manager sub-pages                                              
                                                                                
                                               
  - Follow the existing mocking pattern (TestBed.configureTestingModule with 
stubbed services via useValue, vi.fn() for router/service calls) established in 
the FLINK-40035 specs                               
  - Where a view depends on lazy ng-zorro tab rendering, prefer testing the 
component method directly (e.g. navigateTo(...)) over clicking through the DOM, 
per the review feedback already applied on FLINK-40035                          
                                                                                
                                                                                
          
                                                                                
                                                                                
                                                 
Acceptance                                                                      
                                                                                
                                               
  - npm run test:ci includes at least one passing smoke spec for each of the 
prioritized views                                                               
                                                    
  - No increase in flakiness or runtime that would threaten ci-check's gating 
of the Maven build                                                              
                                                   
  - New specs follow the same file-colocation and naming convention as the 
existing *.component.spec.ts files


> Web dashboard: extend Vitest smoke-test coverage to remaining high-traffic 
> views
> --------------------------------------------------------------------------------
>
>                 Key: FLINK-40117
>                 URL: https://issues.apache.org/jira/browse/FLINK-40117
>             Project: Flink
>          Issue Type: Technical Debt
>          Components: Runtime / Web Frontend
>            Reporter: Purushottam Sinha
>            Priority: Minor
>
> Problem                                                                       
>                                                                               
>                                                    
> FLINK-40035 (PR apache/flink#28610) introduced the Vitest test infra for 
> flink-runtime-web/web-dashboard — jsdom, the @angular/build:unit-test 
> builder, tsconfig.spec.json, and src/test-setup.ts with the ng-zorro/CDK 
> stubs (matchMedia, ResizeObserver, IntersectionObserver). That PR only added 
> smoke specs for 3 components: the Overview statistic cards, the Task Manager 
> list, and the Job Exceptions view. Every other page in the dashboard still 
> has zero automated coverage and relies on manual click-through during 
> framework upgrades.                                                           
>                          
>                                                                               
>                                                                               
>                                                      
> Evidence                                                                      
>                                                                               
>                                                    
>   - Specs exist only for: overview/statistic, task-manager/list, 
> job/exceptions                                                                
>                                                                   
>   - 11 sibling views have no *.spec.ts: job/overview, job/checkpoints, 
> job/timeline, job/dataskew, job/rescales, job/configuration, 
> task-manager/metrics, task-manager/logs, application/overview,               
>   application/exceptions, job-manager/metrics                                 
>                                                                               
>                                                      
>   - ci-check already runs test:ci in the Maven build, so a new spec needs no 
> extra CI wiring                                                               
>                                                       
>                                                                               
>                                                                               
>                                                      
> Proposed fix                                                                  
>                                                                               
>                                                    
>   - Add one smoke spec per view above: component renders, key bindings 
> populate from a mocked service response                                       
>                                                             
>   - Order: job/overview (DAG graph) and job/checkpoints first, then 
> job/timeline + application/*, then the remaining task-manager/job-manager 
> sub-pages                                                          
>   - Reuse the TestBed.configureTestingModule + useValue + vi.fn() mocking 
> pattern from the 3 existing specs                                             
>                                                          
>   - For lazy ng-zorro tabs, call the component method directly (e.g. 
> navigateTo(...)) instead of clicking through the DOM, per FLINK-40035's 
> review fix                                                          
>                                                                               
>                                                                               
>                                                      
> Acceptance                                                                    
>                                                                               
>                                                    
>   - npm run test:ci gains one passing spec per prioritized view, starting 
> with job/overview and job/checkpoints                                         
>                                                          
>   - Suite runtime stays low enough not to threaten ci-check's gate on the 
> Maven build                                                                   
>                                                          
>   - New specs are colocated and named *.component.spec.ts, matching 
> FLINK-40035



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to