I'm trying to keep usernames and passwords for a cucumber project out of version control.
Is there a way to manually pass variables on the command line like usernames and passwords to a cucumber script?
My backup plan was to put them in a YML file and add that file to the gitignore so they aren't put in version control.
So, I saw your comments with the Tin Man, and answer is Yes.
PASSWORD is set as an environment variable and you can use its value by referring to it as
ENV['PASSWORD']
. For an example,browser.text_field(:id => 'pwd').set ENV['PASSWORD']
Another way is indirect. What I did in past was to pass profile name and that profile will do something that I want. So, for example, I have a profile name as
firefox
and a firefox profile in cucumber.yml has a variable namedBROWSER_TYPE
with its value assigned to firefox. And this variable (BROWSER_TYPE
) is used by my method that opens the browser. If its value is firefox, than this method opens firefox browser.So, what I did here was -
firefox
BROWSER_TYPE
and assign its value as firefox.BROWSER_TYPE
variable and uses its value to open browser.Code for these steps -
cucumber -p firefox
My cucumber.yml file looks like
firefox: BROWSER_TYPE=firefox PLATFORM=beta
My method to open browser looks similar to -
@browser = Watir::Browser.new ENV['BROWSER_TYPE']
So, ideally you can create a profile that sets an environment variable with password, and pass that profile name to cucumber.
Two thoughts:
1) I've had the same concern, and I created some shell scripts (Mac an Unix) that store credentials in a directory off ~ that are encrypted with machine-specific passwords. I can then use "Given the credentials named blah" in my Cucumber scenarios and then use @username =
testcred get #{credname} username
@username =testcred get #{credname} password
in my step definitions to make this work with no chance that my credentials are ever anyplace they could mistakenly get into a repo. See https://github.com/usethedata/credstore.git for where I've put this into github (early work)2) Lastpass has a command line version that works. I've also played with sharing my test credentials with a LastPass account that's used for just test credentials. I've used the credstore stuff above to store the lastpass master password for that account (never for my real master password) and then used the lastpass command line to get the usernames and passwords. This has the advantage of when I change the credentials in Lastpass, they get updated automatically everywhere they're used