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
-
Check browser console (F12 → Console tab) for timing warnings:
[Risksheet] Data fetch took 8432ms (threshold: 3000ms)
[Risksheet] Render took 5234ms for 450 rows
-
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.
-
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
-
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.
-
Inspect browser Network tab (F12 → Network) for the
/polarion/api/nextedy/powersheet/data call. Response times >15s indicate server-side query bottleneck.
-
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.
Diagnostic Steps
-
Check Velocity macro execution time in Polarion logs (
polarion/logs/polarion.log):
[VelocityMacro] nxLinkCoverage execution: 12.3s (query returned 1847 items)
-
Inspect macro Lucene queries in
.polarion/pages/Dashboards/<dashboard>.vm:
#set($hazards = $trackerService.queryWorkItems("type:hazard", null))
Unfiltered queries across all projects cause slowdowns.
-
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
-
Check report timeout settings in
.polarion/polarion-project.xml:
<property key="pdfExportTimeout" value="300000"/> {/* 5 minutes */}
-
Inspect report Lucene query scope — Reports spanning multiple documents or 1000+ work items require extended timeouts.
-
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.
| Area | Slow (>10s) | Fast (<3s) |
|---|
| Risksheet query | linkedWorkItems: traversal | hasLinks: or type filters |
| PowerSheet depth | 5+ level expansion | 3 level maximum |
| Dashboard queries | No project filter | Scoped to project + status |
| Report scope | Project-wide | Document-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