Web Automation Application Framework
11 October, 2022 - 3 min read
Vision
This project combines what I have learned in both domains of Software Development and Software Testing.
Use Case
There will be multiple use-cases for this project:
- Web scraping
- Web botting
- Web application testing (of itself and of other applications)
- etc.
Infrastructure
Software Testing Domain
I will define the web automation aspect of this project as a subclass of the software testing domain as it shares similarities.
Web automation will fall into 2 types, UI and API automation. API automation will be the preferred form of automation for web botting and scraping as it is much faster than UI automation. However most web applications these days do not easily allow their API endpoints to be accessed; most require authentication, usually through the form of json-web-tokens. Therefore most automation will be done through UI automation, though slower; it does not require authentication.
Web automation will be done using a Java Cucumber/RestAssured/Selenium/Junit/Maven/SpringConfig/Allure/Surefire Stack with a DockerSeleniumGrid for parallel executions (to overcome the slowness, we will utilize a separate machine that is dedicated for handling the Selenium driver instances).
As for testing of the application itself (the part of the framework that is responsible for displaying data accrued through web automation) that part will be backlogged as it isn't really that important. It would only ever be useful if I had the vision of making this a production ready application that is hosted.
The above would eventually be implemented but only as a proof of concept and for learning purposes.
Software Development Domain
I would actually define Software Testing to also fall within the Software Development Domain, because... clean code.
For the application that shows myself the data accrued it will consist of both an mvc + frontend&backend application. The reason I am going to initially use an MVC pattern, is because it is faster to start up. There will be limitations in the complexity of the user interface i'll be able to implement but it is not a priority to have a complex user interface.
The mvc and backend will be done using a Java Spring Boot stack with Thymeleaf used as the "view." The backend portion of the application will have exposed API endpoints that will allow it to connect to the web automation portion of the application and also allow for an abstracted frontend to eventually connect to the backend. Emphasis on "eventually" because as I mentioned before it is not a priority, but when it does eventually happen it will be either an AngularJS or ReactJS frontend.
HL Project Infrastructure Diagram
Codebase
You can find the public repository here: