You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
New Context recordHar with a relative path writes the HAR into the wrapper directory, also on the Robot Framework path #5152
A relative recordHar path is passed to the Node side verbatim and is resolved against the Node process's working directory — the wrapper directory inside the installed package. The HAR file is written there instead of under ${OUTPUTDIR}.
This affects ordinary Robot Framework runs, not only keywords called from Python. recordHar never passes through outputdir, so an absolute ${OUTPUTDIR} does not protect it.
Reproduce
*** Settings ***Library Browser
*** Test Cases ***Record Har With A Relative Path
New Browser webkit headless=True
New Context recordHar={"path": "relative_from_robot.har"}
New Page ${PAGE_URL}
Get Title == HAR lab
Close Context
Close Browser ALL
Run with robot --outputdir out har.robot. Observed:
Browser/wrapper/relative_from_robot.har 1540 bytes <- actual location
out/ <- no .har anywhere
<cwd>/ <- no .har
The test passes, so nothing signals that the file went somewhere unexpected. In a normal (non-editable) install this writes into site-packages.
Cause
recordHar is never touched on the Python side — it appears only in the keyword signature and documentation (Browser/keywords/playwright_state.py:607,649,752) and is forwarded to Node as given. The Node process runs with cwd=self._browser_wrapper_dir (Browser/playwright.py:280, passed to Popen at :104).
Compare recordVideo, which is resolved before being sent (Browser/keywords/playwright_state.py:948-960) and therefore behaves correctly.
Suggested fix
Resolve the recordHar path in _set_context_options the same way recordVideo's directory is resolved, so a relative path lands under outputdir.
Activity