toeb / accounting

3 stars 0 forks source link

Create Testing Base class for End to end Application Testing #17

Closed toeb closed 9 years ago

toeb commented 9 years ago

Story:

Using Selenium (PhantomJS,Chrome,IE,FireFox) and Owin SelfHost it should be possible to allow for real End to end testing of the web frontend and the backend. TO create simple unit tests a base class is necessary which incorporates all the functionality fives the dev access to a Browser object (IWebDriver)

matthiaszoellner commented 9 years ago

This is actually a technical story. I think we should be focusing on user stories like "User wants compatibility for IE, Firefox, ..." and then discuss our technical implementation based on that.

There is no user-value in developer demands.

matthiaszoellner commented 9 years ago

On a second thought, I think we should change the focus of this issue: There is no need to support all browsers. What we actually need is support for at least one browser and for future developments. For this application and the intended usage it would be reasonable to say: we focus on full compliance to HTML-Standard XX (whatever we need), additionally we restrict ourselfes to those features, which are currently supported by Firefox and Chrome.

Ofcourse, as long as full browser support is easily archieved, we can go with it. But if we were to decide between missing features and missing IE-Support due to lack of standard implementation, I would rather drop IE.

toeb commented 9 years ago

I agree, Chrome/Firefox should be used (phantomjs is just webkit -> firefox) The standard adherance is important and that is all that is to be tested with the End to end tests. I have implemented the base class for these tests and it is very easy to use (and to exchange the brwoser driver whcih is used):

See AccountsTest in Application.Web.Tests to see how it works. Basically the following happens

Now the Testmethod is executed. Here you can use the Browser.Navigate() to go to the url you would like e.g. ´Url+"#/accounts"´ the requests will be served by the webserver in the same process which allows you to easily debug the whole stack

afterword everything is disposed.

toeb commented 9 years ago

This was already implemented