{ "id": "91801", "key": "ALOY-54", "fields": { "issuetype": { "id": "5", "description": "The sub-task of the issue", "name": "Sub-task", "subtask": true }, "parent": { "id": "91490", "key": "ALOY-37", "fields": { "summary": "ZipTi will need comprehensive logging", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "7", "description": "gh.issue.story.desc", "name": "Story", "subtask": false } } }, "project": { "id": "11113", "key": "ALOY", "name": "Alloy", "projectCategory": { "id": "10400", "description": "Tools for developing applications", "name": "Tooling" } }, "fixVersions": [ { "id": "14036", "description": "2012 Sprint 14", "name": "2012 Sprint 14", "archived": true, "released": true, "releaseDate": "2012-07-19" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2012-07-19T11:52:03.000+0000", "created": "2012-05-14T07:55:33.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [], "versions": [ { "id": "14036", "description": "2012 Sprint 14", "name": "2012 Sprint 14", "archived": true, "released": true, "releaseDate": "2012-07-19" } ], "issuelinks": [], "assignee": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2012-07-19T11:52:03.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "12329", "name": "Runtime", "description": "Generic bucket for uncategorized runtime issues" } ], "description": "Right now when a user references an unknown ID in a selector they get the very-tough-to-debug message seen in the attached screenshot:\r\n\r\n{code}\r\n'null' is not an object (evaluating 'element.getAttribute') (unknown file)\r\n{code}\r\n\r\nWe need to find a way for this to be much more verbose and actually indicate where the issue is occurring. Either that, or we handle it like jQuery, where incorrect selectors fail silently: [http://stackoverflow.com/questions/3709604/why-doesnt-jquery-bomb-if-your-selector-object-is-invalid|http://stackoverflow.com/questions/3709604/why-doesnt-jquery-bomb-if-your-selector-object-is-invalid]", "attachment": [ { "id": "27676", "filename": "Screen Shot 2012-05-14 at 10.31.51 AM.png", "author": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-05-14T07:55:50.000+0000", "size": 41147, "mimeType": "image/png" } ], "flagged": false, "summary": "Improve runtime error messages", "creator": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "comment": { "comments": [ { "id": "194654", "author": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "body": "I would prefer the jQuery approach, but this will be much more difficult as the returned objects from the selectors in our case are Titanium API objects, not wrapped selector objects. We have no means currently of preventing this type of error since we have no wrapped object that supports chaining and prevent these {{null}} calls.", "updateAuthor": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-05-14T08:04:53.000+0000", "updated": "2012-05-14T08:04:53.000+0000" }, { "id": "194658", "author": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "body": "I'm also not aware of any means to create a JS call stack to view where the offending failed selector exists. All of the standard JS methods mentioned for building call stacks either don't work on any/all platforms or they are deprecated. (i.e., arguments.callee.caller, (new Error).lineNumber)\r\n\r\nWe don't appear to have a good way to handle this right now. The best I can do is report the text of the selector, but that can potentially exist in any file or many different places within on project.", "updateAuthor": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-05-14T08:52:23.000+0000", "updated": "2012-05-14T08:52:23.000+0000" }, { "id": "200614", "author": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "body": "These runtime issues are no longer a concern without the runtime DOM", "updateAuthor": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-06-27T11:34:16.000+0000", "updated": "2012-06-27T11:34:16.000+0000" } ], "maxResults": 3, "total": 3, "startAt": 0 } } }