Skip to main content

Common Performance Scenarios

TestAuto2 performance issues typically fall into four categories: risksheet loading delays, powersheet timeout errors, dashboard widget slowdowns, and report generation failures. Each has distinct root causes and solutions.

Risksheet Loading Slowly

Diagnostic Steps

  1. Check browser console (F12 → Console tab) for timing warnings:
    [Risksheet] Data fetch took 8432ms (threshold: 3000ms)
    [Risksheet] Render took 5234ms for 450 rows
    
  2. Inspect the Lucene query in .polarion/nextedy/sheet-configurations/<risksheet>.yaml:
    query: "type:failureMode AND status:(draft OR in_review OR approved)"
    
    Complex queries with multiple AND linkedWorkItems: clauses cause exponential slowdown.
  3. Count visible rows: Risksheets with >200 rows require pagination or filtering. Check if defaultView restricts row count:
    defaultView: "initial-assessment"  # Should limit to in-progress items only
    

Solutions

Optimize the Lucene query by replacing linkedWorkItems: with work item type filters:
# Slow (traverses all links at query time)
query: "type:failureMode AND linkedWorkItems:(type:riskControl)"

# Fast (filter by presence of specific link role)
query: "type:failureMode AND hasLinks:mitigatedBy"
Enable progressive loading for large datasets:
settings:
  pagination:
    enabled: true
    pageSize: 50
Reduce calculated columns — move complex formulas to work item custom fields that compute on save, not on every render.
Loading risksheets with baseline comparison enabled (showBaseline: true) doubles load time because Polarion fetches two complete datasets. Disable baseline view for day-to-day editing; enable only for formal reviews.

PowerSheet Timeout Errors

Diagnostic Steps

  1. Check RTM expansion depth in .polarion/nextedy/sheet-configurations/<powersheet>.yaml:
    expansionPath: "customerRequirement > systemRequirement > subsystemRequirement > designRequirement > testCase"
    
    Five-level expansions with hundreds of requirements cause >30s load times.
  2. Inspect browser Network tab (F12 → Network) for the /polarion/api/nextedy/powersheet/data call. Response times >15s indicate server-side query bottleneck.
  3. Review entity constraints — PowerSheets constrained by project or document load faster:
    baseEntity:
      type: "customerRequirement"
      constraint: "project.id:TestAuto2 AND document.id:SYS_REQ_001"
    

Solutions

Reduce expansion depth by splitting into multiple PowerSheets:
# Instead of one 5-level sheet, create two 3-level sheets:
# Sheet 1: Customer → System → Subsystem
# Sheet 2: Subsystem → Design → Test
Add document-level constraints to reduce the working set:
baseEntity:
  constraint: "document.id:(SYS_REQ_* OR CUST_REQ_*)"  # Limit to specific docs
Enable server-side caching — PowerSheet queries are cached for 10 minutes. Refresh data only when work items change.
PowerSheets should load in <5s for 100 base entities. If expansion produces >500 total cells, split the sheet or add filters.

Dashboard Widget Slowdowns

Diagnostic Steps

  1. Check Velocity macro execution time in Polarion logs (polarion/logs/polarion.log):
    [VelocityMacro] nxLinkCoverage execution: 12.3s (query returned 1847 items)
    
  2. Inspect macro Lucene queries in .polarion/pages/Dashboards/<dashboard>.vm:
    #set($hazards = $trackerService.queryWorkItems("type:hazard", null))
    
    Unfiltered queries across all projects cause slowdowns.
  3. Count widget instances — Dashboards with >10 macro calls render sequentially, multiplying delays.

Solutions

Optimize Lucene queries with project and status filters:
## Slow (queries all hazards in Polarion instance)
#set($hazards = $trackerService.queryWorkItems("type:hazard", null))

## Fast (scoped to current project and active items only)
#set($hazards = $trackerService.queryWorkItems("type:hazard AND project.id:$project.id AND status:(draft OR approved)", null))
Cache expensive queries using Velocity variables at page scope:
#if(!$cachedRequirements)
  #set($cachedRequirements = $trackerService.queryWorkItems("type:systemRequirement", null))
#end
#nxLinkCoverage($cachedRequirements "verifiedBy")
Limit widget result sets — For KPI cards showing counts, use queryWorkItems(...).size() instead of fetching full work item data:
## Count only (fast)
#set($count = $trackerService.queryWorkItems("type:testCase AND status:passed", null).size())
#nxKpiCard("Tests Passed" $count "success")
Dashboard widgets timeout after 30s by default. First load after Polarion restart may be slower due to Lucene index warming. Subsequent loads use cached indices and complete in <3s.

Report Generation Failures

Diagnostic Steps

  1. Check report timeout settings in .polarion/polarion-project.xml:
    &lt;property key="pdfExportTimeout" value="300000"/&gt;  {/* 5 minutes */}
    
  2. Inspect report Lucene query scope — Reports spanning multiple documents or 1000+ work items require extended timeouts.
  3. Review Velocity template complexity in .polarion/pages/Reports/<report>.vm — Nested loops over linked work items cause exponential execution time.

Solutions

Increase timeout for large reports:
<property key="pdfExportTimeout" value="600000"/>  <!-- 10 minutes for FMEA reports -->
Scope reports to specific documents instead of project-wide queries:
## Slow (all FMEA failure modes in project)
#set($failures = $trackerService.queryWorkItems("type:failureMode", null))

## Fast (single FMEA document)
#set($failures = $module.getDocumentWorkItems("SFMEA_001"))
Paginate large reports by splitting into per-subsystem or per-document sections.

Performance Optimization Checklist

AreaSlow (>10s)Fast (<3s)
Risksheet querylinkedWorkItems: traversalhasLinks: or type filters
PowerSheet depth5+ level expansion3 level maximum
Dashboard queriesNo project filterScoped to project + status
Report scopeProject-wideDocument-specific
Row count>500 visible rows<200 via pagination/views

Verification

After optimization, you should see:
  • Risksheets load in <5s with smooth scrolling (test by refreshing the document)
  • PowerSheets render expansion in <8s for 100+ base entities
  • Dashboards display all widgets within 10s of page load
  • Reports generate PDF exports without timeout errors (check Polarion logs for [PDF Export] Success message)

See Also