Documentation request: .NET 6 example using both specflow.actions.json & appsettings.json
Product:
- [x] SpecFlow
- [ ] SpecFlow+ Runner
- [ ] SpecFlow+ LivingDoc
- [ ] SpecMap
What is missing: As a new SpecFlow adventurer 👶🏴☠️ , could some brave soul please show me how to setup a .NET 6 + SpecFlow+Selenium using both appsettings.<environment>.json and specflow.actions.<browser>.json, this would probably fit right at home here in the collection. Most of the examples cover one or the other but I think an example using both is missing.
Request Specifics:
Project type:
- SpecFlow project template
- Selenium
- Framework .NET 6.0
- Test Framework: NUnit (any)
Here's a bunch of dummy info to put in the files themselves, unfortunately I don't know what is the best way in setting it up.
Multiple (at least 2) environments. appsettings.<environment>.json
appsettings.debug.json
{
"AppUrl": "http://localhost:4200/"
}
appsettings.release.json
{
"AppUrl": "http://actualurl.omg"
}
Multiple browser specific configuration.specflow.actions.<browser>.json
specflow.actions.firefox.json It only seems to work with double dash arguments although Firefox arguments are single dashed?
{
"selenium": {
"browser": "firefox",
"arguments": [
"--private"
]
}
}
specflow.actions.chrome.json
{
"selenium": {
"browser": "chrome",
"arguments": [
"--start-maximized",
"--incognito"
]
}
}
specflow.actions.json
{
"selenium": {
"defaultTimeout": 60,
"pollingInterval": 5
}
}
What I used to do is,
In app settings I used name as,
appsettings.Env.json and have a seperate .runsettings file, that includes, Env details, Browser etc.
so on execution, my command line will be,
dotnet test -s test.runsettings -- TestRunParameters.Parameter(name="Env", value="QA") TestRunParameters.Parameter(name="Browser", value="Chrome")
So my code will pick the appropriate appsettings based on the command given in the terminal.
Thanks for the tip however, I was looking for a solution using specflow.actions because as far as I understand about it, it will run all the browsers along with their respective specific configurations without having to perform additional actions.