gems test-prof 0.9.0

latest releases: 1.3.3, 1.3.2, 1.3.1...
5 years ago

This release is inspired by ideas discussed and implemented in this PR to Discourse. Specials thanks to @danielwaterworth and @SamSaffron.

tl;dr before_all hooks, let_it_be aliases, better Fabrication support.

before_all

  • Added global callbacks to before_all.

Now you can execute additional code before and after every before_all transaction begins and rollbacks:

TestProf::BeforeAll.configure do |config|
  config.before(:begin) do
    # do something before transaction opens
  end

  config.after(:rollback) do
    # do something after transaction closes
  end
end

let_it_be

  • Added ability to use let_it_be aliases with predefined options.
TestProf::LetItBe.configure do |config|
  config.alias_to :let_it_be_with_refind, refind: true
end

Then use it in your tests:

describe "smth" do
  let_it_be_with_refind(:foo) { Foo.create }

  # refind can still be overridden
  let_it_be_with_refind(:bar, refind: false) { Bar.create }
end

FactoryProf

  • Added timings to FactoryProf report.
[TEST PROF INFO] Factories usage                                                                                                                                          
                                                                                                                                                                          
Total: 15285                                                                                                                                                             
Total top-level: 10286                                                                                                                                                   
Total time: 299.5937s                                                                                                                                                     
Total uniq factories: 119                                                                                                                                                
                                                                                                                                                                          
 total   top-level   total time   top-level time            name
  6091        2715    115.7671s         50.2517s            user 
  2142        2098     93.3152s         92.1915s            post       

FactoryDoctor

  • Added Fabrication support.

  • Added threshold and instrumentation event customization.

NOTE: default threshold is 0.01s (i.e. if the DB time is less for the example, we consider it "good").

$ FDOC=1 FDOC_EVENT="sql.rom" FDOC_THRESHOLD=0.1 rspec

EventProf

  • Added guard and top_level options to EventProf::Monitor.

For example:

TestProf::EventProf.monitor(
  Sidekiq::Client,
  "sidekiq.inline",
  :raw_push,
  # top_level: true means that we do not trigger events when the method is
  # called recursively within itself
  top_level: true,
  # only trigger the event when guard returns `true`
  guard: ->(*) { Sidekiq::Testing.inline? }
)
  • Added Fabrication support for factory.create event.

Don't miss a new test-prof release

NewReleases is sending notifications on new releases.