Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
1 of 4 tasks
A-Rai-col opened this issue Feb 6, 2024 · 5 comments
Open
1 of 4 tasks

Comments

@A-Rai-col
Copy link

A-Rai-col commented Feb 6, 2024

Product:

  • 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
  }
}
@grajesh690
Copy link

grajesh690 commented Mar 12, 2024

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.

@A-Rai-col
Copy link
Author

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.

@DeLaphante
Copy link

I would advised all to not use Specflow+ Runner or LivingDoc as its currently not being supported or developed - migrate to MsTest or Nunit and also update to latest .net 8+ and use third party reporting libraries such as extent report.

Specflow is working perfectly fine for me with the above changes in the following daily github actions repo -> https://github.com/DeLaphante/CynkyAutomation/actions

@A-Rai-col
Copy link
Author

A-Rai-col commented Nov 11, 2024

@DeLaphante Actually the previous maintainers of SpecFlow have created a different project Reqnroll which is being actively maintained.

@DeLaphante
Copy link

@A-Rai-col - yeah you can also migrate to that but if you don't and still want to use Specflow then its still working perfectly fine when everything is up-to-date - hence the reason i provided a link to my repo

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants