Details
-
Bug
-
Status: Open
-
Minor
-
Resolution: Unresolved
-
Xray DC 8.4.0
-
None
-
None
-
Xray Data Center
Description
Description
Advanced filter in Test Execution issues fails on JSM/Service Desk projects. The validateJqlExpression() function in filter-picker-util.js attempts to read the CSRF token from a legacy hidden form input (input[name="atl_token"]) that JSM pages do not render, causing a TypeError when querySelector returns null and .value is accessed.
Pre-conditions
- JSM (Jira Service Management) or Service Desk project
- Test Execution issue view open
- Attempting to use Advanced filter with any JQL query
How to reproduce
- Open a Test Execution issue in a JSM/Service Desk project
- Navigate to Filters > Advanced
- Enter any JQL query (e.g. assignee = <user>)
- Attempt to apply the filter
Actual result/Attachments
The filter dialog hangs in a loading state and the JQL validation POST request is never sent. Browser console shows: "Uncaught TypeError: can't access property 'value', document.querySelector(...) is null" thrown from validateJqlExpression() in raven-common-components-filters-picker / filter-picker-util.js. On intermittent page-load timing variations, the input may contain the string "undefined", producing a 403 response instead. Support zip and webm recording of the issue available:
Jira_node1_blb48020_support_2026-06-10-14-53-23 (1) (1).zip![]()
bug_advanced_jql_inTPTE (1).webm![]()
Â
Expected result
The Advanced filter should validate the JQL query and return matching tests without error. POST /rest/raven/1.0/jql/validation should complete with a 200 response and display results.
Version
- Xray Data Center 8.4.0-j10
- Jira 10.3.17
Workaround
Yes. Open DevTools Console, paste the following snippet, and press Enter. Without reloading, the Advanced filter will work for that session:
document.querySelectorAll('input[name="atl_token"]').forEach(el => el.remove()); const token = document.querySelector('meta[name="atlassian-token"]').content; const input = document.createElement('input'); input.type = 'hidden'; input.name = 'atl_token'; input.value = token; document.body.appendChild(input); console.log(token);
The permanent fix must be applied in validateJqlExpression() to read the CSRF token from meta[name="atlassian-token"] (standard Atlassian convention, present on all page types) instead of relying on the legacy input[name="atl_token"] selector.

Attachments
Issue Links
- duplicates
-
XDC-1088 Loading...