Repository navigation
Issue 419 Exec Navigator EXDS Syntax Error Fix
Test Case Execution → Execute Tests: the left-hand navigator rendered an
empty tree — no suites, no cases, nothing executable. DevTools console showed
Uncaught SyntaxError: Unexpected token ',' followed by
Uncaught ReferenceError: treeCfg is not defined.

gui/templates/dashio/execute/execNavigator.tpl:57 emits the dashboard
bootstrap call:
EXDS({$gui->tproject_id},{$control->args->setting_testplan});but initializeGui() in lib/execute/execNavigator.php never assigned
$gui->tproject_id. Smarty renders an unset property as an empty string, so
the browser received:
EXDS(,18);That is a JavaScript syntax error, and because the call sits in the same
inline <script> block that defines treeCfg and registers the
Ext.onReady() handler which builds the Ext JS tree, parsing of the entire
block aborted. Result: #tree_div was created but never populated.
EXDS(tproject_id, tplan_id) grew its first parameter in
gui/javascript/testlink_library.js (EXDS(tproject_id,tplan_id) navigates to
lib/execute/execDashboard.php?tproject_id=...&tplan_id=...) while the PHP
side was never updated to supply it — a signature drift in the same family as
the historical ETS()/ET() drift.
The minimal PHP-side fix assigns the missing GUI property from the filter control before rendering:
// lib/execute/execNavigator.php — initializeGui()
// Needed by the template to emit EXDS(tproject_id,tplan_id).
// Without it the call is rendered as EXDS(,NN) => JS syntax error that
// aborts the whole inline script, leaving the execution tree unbuilt.
$gui->tproject_id = intval($control->args->testproject_id);Why this method:
- The template already expects
$gui->tproject_id; supplying it keeps the Smarty/JS contract intact without touching the theme. - Alternatives rejected: making
EXDS()tolerate empty args (would silently navigate to the wrong dashboard), or moving the bootstrap call into a separate script block (masks the real defect, more churn).
Landed on the default branch in commit 857555dad ("Fix test execution and
reporting flow", 2026-08-17).
Fixtures recreated fresh (tmp/fixtures_419.php): project EXDS Demo Project
(prefix EXD), suites EXDS Top Suite / EXDS Child Suite, cases
EXD-1..3 linked to plan EXDS Plan, build EXDS Build 1.
| Check | Result |
|---|---|
Inline script emits EXDS(6,18); (no empty arg) |
PASS |
Console free of SyntaxError / treeCfg is not defined; typeof treeCfg === 'object'
|
PASS |
#tree_div populated (1941 chars of tree markup) |
PASS |
| Full flow index.php → aside Execute Tests renders navigator + dashboard frames | PASS |
| Expanded tree lists root, both suites and all 3 cases | PASS |
Clicking case fires ST(9,10) and loads execSetResults.php form in workframe |
PASS |
| Event Viewer: no new Error/Warning attributable to the navigator bootstrap | PASS |
Full suite: tmp/TLU_Test_Cases.md, Suite 59 (7/7 PASS).
- #613 — chosen.jquery.js loaded before jQuery in
frmInner.tpl/workbench.tpl(console ReferenceError on every workarea load). - #614 — E_WARNING trio when rendering an execution form
(
round_enabledundefined in execSetResults.tpl:141 + two null-access warnings).