SpecFlow icon indicating copy to clipboard operation
SpecFlow copied to clipboard

Documentation request: .NET 6 example using both specflow.actions.json & appsettings.json

Open A-Rai-col opened this issue 1 year ago • 2 comments

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
  }
}

A-Rai-col avatar Feb 06 '24 17:02 A-Rai-col

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.

grajesh690 avatar Mar 12 '24 09:03 grajesh690

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.

A-Rai-col avatar Mar 13 '24 11:03 A-Rai-col