Just to reiterate, a Framework is not just a set of tools or languages.
A framework is comprised of a combination of practices and tools that
are designed to help QA professionals test more efficiently.
These guidelines could include coding standards, test-data handling
methods, object repositories, processes for storing test results, or
information on how to access external resources.
While these are not mandatory rules and testers can still script or
record tests without following them, using an organized framework
typically provides additional benefits that would otherwise be missed
So, Cypress.io, CodeceptJS and Webdriver.io for instance are just tools.You can create a all in one framework using any language, you can use requests module in python ,HttpURLConnection or restassured in java etc for API testing. Similar modules wil be available for database testing, performance testing etc. You can develop your on modules also if you like.
But, the already available tools are developed and designed to overcome the challenges in handling issues in SUT. For instance , protractor natively handles asynchronous nature of angularpages and there by makes test execution pretty fast.
If you try to reinvent the wheel, it might end up in following issues:
- Cost overhead
- More turnover time
- Lesser efficiency
- More learning curve
- Increased complexity
- More development time
- More human resource requirments
From my experience, the best implementation time and flexibilty for API testing was provided by Robotframework as python natively handles json unlike in java. For UI , protractor-jasmine gave faster turn-around time as it didn't require complex frameworks like testng or maven etc.Protractor-jasmine also allows to play around with low level programing than making the entire thing complex using feature files like in cucumber or keyword tests in robotframework.