Ruby Tests Profiling Toolbox
timecop
Our great sponsors
Ruby Tests Profiling Toolbox | timecop | |
---|---|---|
7 | 4 | |
1,793 | 3,334 | |
1.2% | - | |
7.5 | 6.1 | |
8 days ago | 19 days ago | |
Ruby | Ruby | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Ruby Tests Profiling Toolbox
-
Must-have gems for mature Rails
gem "test-prof" - https://github.com/test-prof/test-prof | Toolkit for inspecting and optimising your test-suite, a must-have.
-
Measuring load time on fixtures
You might be able to do something with https://test-prof.evilmartians.io, but I'm not sure it has anything specific to fixtures out of the box. Maybe using the event profiler on sql.active_record events would be close enough. In the limit, you could wire together your own ActiveSupport::Notifications.instrument around the relevant blocks + an ActiveSupport::Notifications.subscribe to that event so as to log the relevant information. Docs: https://api.rubyonrails.org/classes/ActiveSupport/Notifications.html
-
How to optimize factory creation.
To have a better vision of what objects are created in our spec file we can use test-prof, a powerful gem that provides a collection of different tools to analyse your test suite performance. One of this tool is really useful to identify a factory cascade, let’s introduce factory profiler.
-
A Trick For Reading Flamegraphs
TestProf can be used to get flamegraphs for Ruby test suites.
- How to improve a test suit made with Rspec, Capybara, FactoryBot and Siteprism
-
Does pytest break a lot of coding rules?
Rspec has spec_helper.rb.
-
Learning resources to broaden the knowledge
I also love the test-prof documentation, there's a lot of good ideas on how to improve test performance.
timecop
-
About time: how to unit test code that depends on time
The Ruby equivalent is Timecop
https://github.com/travisjeffery/timecop
Dynamic languages have the advantage to be able to rewrite the standard library classes at runtime.
-
What questions do you consider important for a Ruby on Rails technical interview?
vs https://github.com/travisjeffery/timecop yes it's true and i am happy to show everybody that they don't need timecop in rails test suite anymore.
- What are your top useful gems?
-
Travel in time in development/staing/... in your Rails app
I believe you already familiar with the gem https://github.com/travisjeffery/timecop which is very useful for testing.
What are some alternatives?
DuckRails - Development tool to mock API endpoints quickly and easily (docker image available)
Parallel Tests - Ruby: 2 CPUs = 2x Testing Speed for RSpec, Test::Unit and Cucumber
Spinach - Spinach is a BDD framework on top of Gherkin.
vcr - Record your test suite's HTTP interactions and replay them during future test runs for fast, deterministic, accurate tests.
minitest - minitest provides a complete suite of testing facilities supporting TDD, BDD, mocking, and benchmarking.
R Spec - A minimalist RSpec clone with all the essentials. [Moved to: https://github.com/cyril/r_spec-clone.rb]
factory_bot - A library for setting up Ruby objects as test data.
Knapsack - Knapsack splits tests evenly across parallel CI nodes to run fast CI build and save you time.
faker - A library for generating fake data such as names, addresses, and phone numbers.
mutant - Automated code reviews via mutation testing - semantic code coverage.
Watir - Watir Powered By Selenium
Spring - Rails application preloader