I am running into an issue with my Robot Framework test suites. I have a simple test structure like this:
robotframework
|_foo
|_tests folder
|_pages folder
|_firefoxTestProfile folder
|_...
I have set a bare bones Firefox Profile path to run my tests and have set the variable like so:
*** Variables ***
${FF_PROFILE} foo\firefoxTestProfile
*** Keywords ***
Open browser window
Open Browser ${test_url} ${browser}
... ff_profile_dir=${FF_PROFILE}
When I run my tests from the top directory, it runs fine:
C:/robotframework$ pybot foo/tests/test.txt
However, if I try to run it from the foo directory, like this:
C:/robotframework/foo$ pybot tests/test.txt
The tests throw fails, stating
"The system cannot find the path specified: foo/firefoxTestProfile/*.*"
I tried various things, such as putting the path as
../foo/firefoxTestProfile
/foo/firefoxTestProfile
firefoxTestProfile
as well as moving the firefoxTestProfile folder to a different path within the file structure and updating to that new path, but none of this worked and displayed the same error message as before.
It's also important because I want a default firefox profile to run with the tests, and these tests are passed between different people for running them locally on their machines. Any help would be greatly appreciated.
There are several built-in variables that can help you define the path correctly.
The one that is most interesting here is ${CURDIR}
From the documentation:
${CURDIR} An absolute path to the directory where the test data file is located. This variable is case-sensitive.
I usually define a master suite setup file (in your case, in the root tests folder) and in there, I would define the following 3 global level variables
Create a file __init.robot at the root tests folder.
In it create a suite setup section (which will run before any test - but only once!)
Set Global Variable ${testsRootFolder} ${CURDIR}
Set Global Variable ${pagesRootFolder} %{CURDIR}${/}..${/}_pages
Set Global Variable ${firefoxProfileFolder} %{CURDIR}${/}..${/}firefoxTestProfile