# robotframework-stacktrace
A listener for RF >= 4.0 that prints a Stack Trace to console to faster find the code section where the failure appears.
## Installation
```shell
pip install robotframework-stacktrace
```
## Usage
```shell
robot --listener RobotStackTracer <your file.robot>
```
### Example
Old Console Output:
```commandline
❯ robot -d logs TestCases/14_Browser/01_CarConfig.robot
==============================================================================
01 CarConfig
==============================================================================
Configure Car with Pass | FAIL |
TimeoutError: page.selectOption: Timeout 3000ms exceeded.
=========================== logs ===========================
waiting for selector ""Basismodell" >> ../.. >> select"
selector resolved to visible <select _ngcontent-c7="" class="maxWidth ng-untouched ng…>…</select>
selecting specified option(s)
did not find some options - waiting...
============================================================
Note: use DEBUG=pw:api environment variable to capture Playwright logs.
------------------------------------------------------------------------------
Configure Car with wrong Acc | FAIL |
TimeoutError: page.check: Timeout 3000ms exceeded.
=========================== logs ===========================
waiting for selector "//span[contains(text(),'aABS')]/../input"
============================================================
Note: use DEBUG=pw:api environment variable to capture Playwright logs.
------------------------------------------------------------------------------
Configure Car with car Acc | FAIL |
TimeoutError: page.click: Timeout 3000ms exceeded.
=========================== logs ===========================
waiting for selector "[href="/config/summary/wrong"]"
============================================================
Note: use DEBUG=pw:api environment variable to capture Playwright logs.
------------------------------------------------------------------------------
01 CarConfig | FAIL |
3 tests, 0 passed, 3 failed
==============================================================================
Output: /Source/RF-Schulung/02_RobotFiles/logs/output.xml
Log: /Source/RF-Schulung/02_RobotFiles/logs/log.html
Report: /Source/RF-Schulung/02_RobotFiles/logs/report.html
```
New Stack Trace Output
```commandline
❯ robot -d logs --listener RobotStackTracer TestCases/14_Browser/01_CarConfig.robot
==============================================================================
01 CarConfig
==============================================================================
Configure Car with Pass ...
Traceback (most recent call last):
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
File /Source/RF-Schulung/02_RobotFiles/TestCases/14_Browser/01_CarConfig.robot:23
T: Configure Car with Pass
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
File /Source/RF-Schulung/02_RobotFiles/TestCases/14_Browser/01_CarConfig.robot:28
Select aMinigolf as model
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
File /Source/RF-Schulung/02_RobotFiles/TestCases/14_Browser/functional_keywords.resource:14
Select Options By ${select_CarBaseModel} text ${basemodel}
| ${select_CarBaseModel} = "Basismodell" >> ../.. >> select (str)
| ${basemodel} = aMinigolf (str)
______________________________________________________________________________
Configure Car with Pass | FAIL |
TimeoutError: page.selectOption: Timeout 3000ms exceeded.
=========================== logs ===========================
waiting for selector ""Basismodell" >> ../.. >> select"
selector resolved to visible <select _ngcontent-c7="" class="maxWidth ng-untouched ng…>…</select>
selecting specified option(s)
did not find some options - waiting...
============================================================
Note: use DEBUG=pw:api environment variable to capture Playwright logs.
------------------------------------------------------------------------------
Configure Car with wrong Acc ....
Traceback (most recent call last):
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
File /Source/RF-Schulung/02_RobotFiles/TestCases/14_Browser/01_CarConfig.robot:38
T: Configure Car with wrong Acc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
File /Source/RF-Schulung/02_RobotFiles/TestCases/14_Browser/01_CarConfig.robot:43
Select Accessory aABS
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
File /Source/RF-Schulung/02_RobotFiles/TestCases/14_Browser/functional_keywords.resource:38
Check Checkbox //span[contains(text(),'${accessory}')]/../input
| //span[contains(text(),'${accessory}')]/../input = //span[contains(text(),'aABS')]/../input (str)
______________________________________________________________________________
Configure Car with wrong Acc | FAIL |
TimeoutError: page.check: Timeout 3000ms exceeded.
=========================== logs ===========================
waiting for selector "//span[contains(text(),'aABS')]/../input"
============================================================
Note: use DEBUG=pw:api environment variable to capture Playwright logs.
------------------------------------------------------------------------------
Configure Car with car Acc ..
Traceback (most recent call last):
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
File /Source/RF-Schulung/02_RobotFiles/TestCases/14_Browser/01_CarConfig.robot:51
T: Configure Car with car Acc
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
File /Source/RF-Schulung/02_RobotFiles/TestCases/14_Browser/01_CarConfig.robot:62
Set wrong Car Name ${car}
| ${car} = My New Car (str)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
File /Source/RF-Schulung/02_RobotFiles/TestCases/14_Browser/functional_keywords.resource:53
Click ${car_name}
| ${car_name} = [href="/config/summary/wrong"] (str)
______________________________________________________________________________
Configure Car with car Acc | FAIL |
TimeoutError: page.click: Timeout 3000ms exceeded.
=========================== logs ===========================
waiting for selector "[href="/config/summary/wrong"]"
============================================================
Note: use DEBUG=pw:api environment variable to capture Playwright logs.
------------------------------------------------------------------------------
01 CarConfig | FAIL |
3 tests, 0 passed, 3 failed
==============================================================================
Output: /Source/RF-Schulung/02_RobotFiles/logs/output.xml
Log: /Source/RF-Schulung/02_RobotFiles/logs/log.html
Report: /Source/RF-Schulung/02_RobotFiles/logs/report.html
```
Raw data
{
"_id": null,
"home_page": "https://github.com/MarketSquare/robotframework-stacktrace",
"name": "robotframework-stacktrace",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": "",
"keywords": "",
"author": "Ren\u00e9 Rohner(Snooz82)",
"author_email": "snooz@posteo.de",
"download_url": "https://files.pythonhosted.org/packages/f6/cf/6e6934c3d037ef3f5914e88494127ec4d0fea73bd566539e08b9fa2c9324/robotframework-stacktrace-0.4.1.tar.gz",
"platform": "",
"description": "# robotframework-stacktrace\nA listener for RF >= 4.0 that prints a Stack Trace to console to faster find the code section where the failure appears.\n\n## Installation\n\n```shell\npip install robotframework-stacktrace\n```\n\n## Usage\n\n```shell\nrobot --listener RobotStackTracer <your file.robot>\n```\n\n### Example\n\nOld Console Output:\n\n```commandline\n\u276f robot -d logs TestCases/14_Browser/01_CarConfig.robot\n==============================================================================\n01 CarConfig\n==============================================================================\nConfigure Car with Pass | FAIL |\nTimeoutError: page.selectOption: Timeout 3000ms exceeded.\n=========================== logs ===========================\nwaiting for selector \"\"Basismodell\" >> ../.. >> select\"\n selector resolved to visible <select _ngcontent-c7=\"\" class=\"maxWidth ng-untouched ng\u2026>\u2026</select>\n selecting specified option(s)\n did not find some options - waiting...\n============================================================\nNote: use DEBUG=pw:api environment variable to capture Playwright logs.\n------------------------------------------------------------------------------\nConfigure Car with wrong Acc | FAIL |\nTimeoutError: page.check: Timeout 3000ms exceeded.\n=========================== logs ===========================\nwaiting for selector \"//span[contains(text(),'aABS')]/../input\"\n============================================================\nNote: use DEBUG=pw:api environment variable to capture Playwright logs.\n------------------------------------------------------------------------------\nConfigure Car with car Acc | FAIL |\nTimeoutError: page.click: Timeout 3000ms exceeded.\n=========================== logs ===========================\nwaiting for selector \"[href=\"/config/summary/wrong\"]\"\n============================================================\nNote: use DEBUG=pw:api environment variable to capture Playwright logs.\n------------------------------------------------------------------------------\n01 CarConfig | FAIL |\n3 tests, 0 passed, 3 failed\n==============================================================================\nOutput: /Source/RF-Schulung/02_RobotFiles/logs/output.xml\nLog: /Source/RF-Schulung/02_RobotFiles/logs/log.html\nReport: /Source/RF-Schulung/02_RobotFiles/logs/report.html\n```\n\nNew Stack Trace Output\n\n```commandline\n\u276f robot -d logs --listener RobotStackTracer TestCases/14_Browser/01_CarConfig.robot\n==============================================================================\n01 CarConfig\n==============================================================================\nConfigure Car with Pass ...\n Traceback (most recent call last):\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n File /Source/RF-Schulung/02_RobotFiles/TestCases/14_Browser/01_CarConfig.robot:23\n T: Configure Car with Pass\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n File /Source/RF-Schulung/02_RobotFiles/TestCases/14_Browser/01_CarConfig.robot:28\n Select aMinigolf as model\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n File /Source/RF-Schulung/02_RobotFiles/TestCases/14_Browser/functional_keywords.resource:14\n Select Options By ${select_CarBaseModel} text ${basemodel}\n | ${select_CarBaseModel} = \"Basismodell\" >> ../.. >> select (str)\n | ${basemodel} = aMinigolf (str)\n______________________________________________________________________________\nConfigure Car with Pass | FAIL |\nTimeoutError: page.selectOption: Timeout 3000ms exceeded.\n=========================== logs ===========================\nwaiting for selector \"\"Basismodell\" >> ../.. >> select\"\n selector resolved to visible <select _ngcontent-c7=\"\" class=\"maxWidth ng-untouched ng\u2026>\u2026</select>\n selecting specified option(s)\n did not find some options - waiting...\n============================================================\nNote: use DEBUG=pw:api environment variable to capture Playwright logs.\n------------------------------------------------------------------------------\nConfigure Car with wrong Acc ....\n Traceback (most recent call last):\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n File /Source/RF-Schulung/02_RobotFiles/TestCases/14_Browser/01_CarConfig.robot:38\n T: Configure Car with wrong Acc\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n File /Source/RF-Schulung/02_RobotFiles/TestCases/14_Browser/01_CarConfig.robot:43\n Select Accessory aABS\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n File /Source/RF-Schulung/02_RobotFiles/TestCases/14_Browser/functional_keywords.resource:38\n Check Checkbox //span[contains(text(),'${accessory}')]/../input\n | //span[contains(text(),'${accessory}')]/../input = //span[contains(text(),'aABS')]/../input (str)\n______________________________________________________________________________\nConfigure Car with wrong Acc | FAIL |\nTimeoutError: page.check: Timeout 3000ms exceeded.\n=========================== logs ===========================\nwaiting for selector \"//span[contains(text(),'aABS')]/../input\"\n============================================================\nNote: use DEBUG=pw:api environment variable to capture Playwright logs.\n------------------------------------------------------------------------------\nConfigure Car with car Acc ..\n Traceback (most recent call last):\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n File /Source/RF-Schulung/02_RobotFiles/TestCases/14_Browser/01_CarConfig.robot:51\n T: Configure Car with car Acc\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n File /Source/RF-Schulung/02_RobotFiles/TestCases/14_Browser/01_CarConfig.robot:62\n Set wrong Car Name ${car}\n | ${car} = My New Car (str)\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n File /Source/RF-Schulung/02_RobotFiles/TestCases/14_Browser/functional_keywords.resource:53\n Click ${car_name}\n | ${car_name} = [href=\"/config/summary/wrong\"] (str)\n______________________________________________________________________________\nConfigure Car with car Acc | FAIL |\nTimeoutError: page.click: Timeout 3000ms exceeded.\n=========================== logs ===========================\nwaiting for selector \"[href=\"/config/summary/wrong\"]\"\n============================================================\nNote: use DEBUG=pw:api environment variable to capture Playwright logs.\n------------------------------------------------------------------------------\n01 CarConfig | FAIL |\n3 tests, 0 passed, 3 failed\n==============================================================================\nOutput: /Source/RF-Schulung/02_RobotFiles/logs/output.xml\nLog: /Source/RF-Schulung/02_RobotFiles/logs/log.html\nReport: /Source/RF-Schulung/02_RobotFiles/logs/report.html\n```\n\n",
"bugtrack_url": null,
"license": "",
"summary": "A listener that prints a Stack Trace to console to faster find the code section where the failure appears.",
"version": "0.4.1",
"project_urls": {
"Homepage": "https://github.com/MarketSquare/robotframework-stacktrace"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "4ef2be7d680eb8a23e86ea288f6c421e1e8c30c823a8f1521dc6b9f9d7b7692b",
"md5": "bb58f2d35feaaf0e472c8b7d8c3f8904",
"sha256": "018d7a55b99733e64e3cc0b134771b61a47de61de23609ed35c7bf0a53e9290e"
},
"downloads": -1,
"filename": "robotframework_stacktrace-0.4.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "bb58f2d35feaaf0e472c8b7d8c3f8904",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 8543,
"upload_time": "2021-07-12T18:04:22",
"upload_time_iso_8601": "2021-07-12T18:04:22.850788Z",
"url": "https://files.pythonhosted.org/packages/4e/f2/be7d680eb8a23e86ea288f6c421e1e8c30c823a8f1521dc6b9f9d7b7692b/robotframework_stacktrace-0.4.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f6cf6e6934c3d037ef3f5914e88494127ec4d0fea73bd566539e08b9fa2c9324",
"md5": "d653c647a37b3c1928fc205581db713b",
"sha256": "e96cb36e7e9ab55104c1f7d3606249a109e0a4c3bb6a0e294bff07d54ee6f6a5"
},
"downloads": -1,
"filename": "robotframework-stacktrace-0.4.1.tar.gz",
"has_sig": false,
"md5_digest": "d653c647a37b3c1928fc205581db713b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 12634,
"upload_time": "2021-07-12T18:04:24",
"upload_time_iso_8601": "2021-07-12T18:04:24.993863Z",
"url": "https://files.pythonhosted.org/packages/f6/cf/6e6934c3d037ef3f5914e88494127ec4d0fea73bd566539e08b9fa2c9324/robotframework-stacktrace-0.4.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2021-07-12 18:04:24",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "MarketSquare",
"github_project": "robotframework-stacktrace",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "robotframework-stacktrace"
}