FAQ / knapsack_pro / General questions for knapsack_pro gem

How to set before(:suite) and after(:suite) RSpec hooks in Queue Mode (Percy.io example)?

percy-capybara gem version < 4 (old)

Some tools like Percy.io requires to set hooks for RSpec before(:suite) and after(:suite). Knapsack Pro Queue Mode runs subset of test files from the work queue many times. This means the RSpec hooks before(:suite) and after(:suite) will execute multiple times. If you want to run some code only once before Queue Mode starts work and after it finishes then you should do it this way:


# spec_helper.rb or rails_helper.rb
# step for percy-capybara gem version < 4

KnapsackPro::Hooks::Queue.before_queue do |queue_id|
  # executes before Queue Mode starts work
  Percy::Capybara.initialize_build
end

KnapsackPro::Hooks::Queue.after_queue do |queue_id|
  # executes after Queue Mode finishes work
  Percy::Capybara.finalize_build
end

percy-capybara gem version >= 4

If you use percy-capybara 4.x then you don't need to set RSpec hooks. Insted you need to run knapsack_pro via percy npm command.

npx percy exec -- rake knapsack_pro:queue:rspec

# or you can use knapsack_pro binary version instead of rake task
npx percy exec -- knapsack_pro queue:rspec

Read more about knapsack_pro binary version.

Also you need to follow Percy step for parallelism.

  • PERCY_PARALLEL_NONCE - A unique identifier for this build. This can be anything, but it must be the same across parallel build nodes. Usually, this is just the CI build number or a shared timestamp. You can google environment variables for CI provider you use to check what's the env var for build ID.

    You can also find CI build number for your CI provider in knapsack_pro source code. knapsackpro has built in environment variables integration for various CI providers. See for example CircleCI - look for method `nodebuild_id`.

    
    # example for using CircleCI build ID
    export PERCY_PARALLEL_NONCE=$CIRCLE_BUILD_NUM
    
    
  • PERCY_PARALLEL_TOTAL - The total number of parallel build nodes.

General questions for knapsack_pro gem
See questions outside of this category

Start using Knapsack Pro

Sign up and speed up your tests.