5 Matching Annotations
- Jun 2021
This is why for a recent Angular+Rails project we chose to use a testing stack from the backend technology’s ecosystem for e2e testing.
Rather than write new tooling we decided to take advantage of tooling we had in place for our unit tests. Our unit tests already used FactoryBot, a test data generation library, for building up test datasets for a variety of test scenarios. Plus, we had already built up a nice suite of helpers that we coud re-use. By using tools and libraries already a part of the backend technology’s ecosystem we were able to spend less time building additional tooling. We had less code to maintain because of this and more time to work on solving our customer’s pain points.
The problem domain and the data involved in this project was complicated enough. We decided that not having to worry about unknowns with the frontend end-to-end testing stack helped mitigate risk. This isn’t to say you should always going with the tool you know, but in this instance we felt it was the right choice.
This particular project team came in with a lot of experience using testing tools like RSpec and Capybara. This included integrating with additional tools like Selenium WebDriver, Chrome and Chromedriver, data generation libraries like FactoryBot, and task runners like Rake. We had less experience doing end-to-end testing with Protractor even though it too uses Selenium WebDriver (a tool we’re very comfortable with).
There are times to stretch individually and as a team, but there are also times to take advantage of what you already know.
- software stack: choosing
- software stack: choosing: factors: familiarity/experience
- reuse/leverage existing _ when possible
- software stack: choosing: factors: code reuse
- good advice
- me too
- wise choice
- how to choose a dependency/library/framework
- don't repeat yourself
- testing: stack: choosing
- don't reinvent the wheel
- using disparate technologies in a single project
- testing: stack
- key point
- people stick to what they know
- testing: end-to-end
- avoid extra/needless work