21 Best Ruby Testing Frameworks For 2023
Tags: webdev, ruby, testing, frameworks
Published: 2023-02-13 09:19:46

QAs are always searching for the [best automation testing frameworks](https://www.lambdatest.com/blog/automation-testing-frameworks/?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=blog) that provide rich features with simple syntax, better compatibility, and faster execution. If you choose to use Ruby in conjunction with Selenium for web testing, it may be necessary to search for Ruby based testing frameworks for [web application testing](https://www.lambdatest.com/web-application-testing?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=webpage).

Ruby testing frameworks offer a wide range of features, such as support for [behavior-driven development](https://www.lambdatest.com/blog/behaviour-driven-development-by-selenium-testing-with-gherkin/?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=blog), mocking and stubbing, and test suite organization, making it easier for developers to [write effective tests](https://www.lambdatest.com/blog/17-lessons-i-learned-for-writing-effective-test-cases/?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=blog) for their Ruby-based applications.

Over the past decade, it has become clear that technology will keep making huge strides. Since Ruby has maintained its popularity and usability for over two decades, it makes sense to throw some light on the best Ruby-based frameworks. Since every business needs to consider long-term benefits, picking the right [Ruby automation testing](https://www.lambdatest.com/ruby-automation-testing?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=blog) framework is a big decision. The options out there can be overwhelming.

In this blog, let’s look at the 21 best Ruby testing frameworks for 2023. We will also check out microframeworks that handle some primary concerns in case you don’t need a full-fledged framework. So are you ready to scale your business by leveraging the unmatched power of Ruby?

Perfect! Let’s dive right in.

## Why Ruby for test automation?

When it comes to [automation testing](https://www.lambdatest.com/automation-testing?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=blog), one can choose any of the [top programming languages](https://www.lambdatest.com/blog/top-programming-languages-helpful-for-testers/?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=blog). Each language has advantages and limitations, depending on the project you’re working on and which one is the best fit.

However, the simple answer is that Ruby is easy to learn and use. It has great support libraries for testing frameworks, databases, and other utilities, making it easy to build a full project quickly and efficiently. And it has a great community that is helpful and friendly with their advice and knowledge.

Ruby’s syntax is easy to read, which makes it easier to understand what you’re doing when you need to troubleshoot or fix issues in your code. It also makes it simpler to explain the function of your code outside of the code itself because you can simply state, “this code does this,” and continue with the explanation without describing how specific methods operate internally.

***Also, Check this mobile [emulator online](https://www.lambdatest.com/mobile-emulator-online?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=webpage) from LambdaTest allows you to seamlessly test your mobile applications, websites,and web apps on mobile browsers and mobile devices.***

## Advantages of Ruby

For its users, Ruby has several benefits. However, here we go over Ruby’s primary advantages:

* Secure

* Numerous plugins

* Time-efficient

* Packed with third-party libraries

* Easy to learn

* Business logic operations

* Open-Source

However, Ruby comes with a few limitations or restrictions as well, which are listed below:

* Although having a solid community, it does not have the same level of popularity as other languages like Java, C#.

* Longer processing time.

* Difficult to debug a script, i.e., have a flaw that causes errors during runtime, which can be pretty frustrating for development teams.

* It’s challenging to adapt as it has fewer customizable features.

Now, let’s dive into some of the best Ruby testing frameworks for 2023.

## 21 Best Ruby Testing Frameworks for 2023

There are a variety of testing frameworks available for Ruby that make it easier to write, run, and manage tests. These frameworks range from simple testing libraries to complex, full-featured test suites. In this article, we’ll introduce 21 of the best Ruby testing frameworks for 2023.

## 1. RSpec

![](https://cdn-images-1.medium.com/max/3200/0*L8EvI14Tx76Tnj5R.png)

RSpec is one of the best Ruby testing frameworks and a successful testing solution for its code. With its core focus on empowering [test-driven development](https://www.lambdatest.com/blog/tdd-vs-bdd/?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=blog), this framework features small libraries suitable for independent use with other frameworks. RSpec tests front-end behavior by testing individual components and application behavior using the Capybara gem.

This Ruby testing framework also carries out the testing of server-side behavior. When performing [Selenium automation testing with the RSpec framework](https://www.lambdatest.com/selenium-automation-testing-with-rspec-framework?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=webpage), you can group fixtures and allow tests to be organized in groups. The MIT license governs its use as well as redistribution.

## 2. Cucumber

![](https://cdn-images-1.medium.com/max/3200/0*RWI3NjNJTnTorfg9.png)

Cucumber is a reliable automation tool and one of the best Ruby testing frameworks based on BDD. All stakeholders can easily understand its specifications since it’s all plain text. It integrates well with Selenium and facilitates hassle-free [front-end testing](https://www.lambdatest.com/blog/front-end-testing-checklist/?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=webpage). On the other hand, you can test API and other components with the help of databases and rest & soap clients using client libraries.

Creating fixtures couldn’t be easier! Making a fixtures directory and creating the fixture files are the only things left to do. You can also make the grouping of fixtures possible inside these directories while performing [Selenium automation testing with the Cucumber framework](https://www.lambdatest.com/selenium-automation-testing-with-cucumber-framework?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=webpage).

## 3. Test::Unit

![](https://cdn-images-1.medium.com/max/2000/0*yzn-td8Sg_54Km7y.png)

Primarily used for [unit testing](https://www.lambdatest.com/learning-hub/unit-testing?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=learning_hub), Test::Unit belongs to the xUnit family of Ruby unit testing frameworks. It makes fixture methods available via the ClassMethods module and offers support for group fixture methods.

Test::Unit is included in the standard library of Ruby and requires no third-party libraries. It supports only a subset of the features available in other major testing frameworks, such as [JUnit](https://www.lambdatest.com/learning-hub/junit-tutorial?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=learning_hub) and [NUnit](https://www.lambdatest.com/learning-hub/nunit-tutorial?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=learning_hub). However, it provides enough functionality to help programmers test their applications at a unit level.

***Here’s a complete [Manual testing](https://www.lambdatest.com/learning-hub/manual-testing?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=learning_hub) tutorial covering all aspects of Manual testing, including strategies and best practices.***



## 4. Capybara

![](https://cdn-images-1.medium.com/max/2376/0*8EV-WUwPAu84-iYb.png)

Capybara is an automation testing framework written in Ruby. It can easily simulate scenarios for different user stories and automate [web testing](https://www.lambdatest.com/web-testing?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=webpage). In other words, it mimics user actions such as parsing HTML, receiving pages, and submitting forms. It supports [WebDrivers](https://www.lambdatest.com/learning-hub/webdriver?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=webpage) like RackTest, [Selenium](https://www.lambdatest.com/selenium?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=webpage), and Capybara-WebKit.

It comes with Rack::Test support and facilitates test execution via a simple and clean interface. Its powerful and sophisticated synchronization features enable users to handle the asynchronous web easily. Capybara locates relevant elements in the [Document Object Model](https://www.lambdatest.com/blog/document-object-model/?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=blog), followed by the execution of actions such as links and button clicks. You can easily use Cucumber, Minitest, and RSpec with Capybara.

## 5. Minitest

![](https://cdn-images-1.medium.com/max/3200/0*vQJi6gTP88zoBMVL.png)

Minitest boasts high readability and understandability compared to many other best Ruby testing frameworks. It offers an all-in-one suite of testing facilities such as benchmarking, mocking, BDD, and TDD. Even though it’s comparatively smaller, the speed of this [unit testing framework](https://www.lambdatest.com/blog/11-best-unit-testing-frameworks-for-selenium-automation/?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=blog) is incredible.

If you are looking forward to asserting your algorithm performance repeatedly, Minitest is the way to go. Its assertion functions are in the xUnit/TDD style. It also offers support for test fixture functions as well as group fixtures. Users can easily test different components at the backend.

## 6. Spinach

![](https://cdn-images-1.medium.com/max/3200/0*-VsBjfHVNRMwGPqA.png)

Spinach is a high-level framework that supports behavior-driven development and uses the Gherkin language. It helps define an application’s executable specification or the acceptance criteria of libraries. It makes testing server-side behavior easier, but the same is not true for the client side. The inbuilt generator method generates input data before running tests for each. However, it doesn’t define specific data states for a group of tests. In other words, Spinach doesn’t support fixtures and group fixtures.

***In this tutorial on [Agile testing](https://www.lambdatest.com/learning-hub/agile-testing?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=learning_hub), let’s deep dive into the history of Agile testing, its advantages, disadvantages, methods, quadrants, and best practices.***

## 7. Shoulda

![](https://cdn-images-1.medium.com/max/3200/0*RNCgfnG9HWykKQc0.png)

Shoulda comprises two components, Shoulda Context and Matchers. The former facilitates enhanced test naming and grouping, whereas Shoulda Matches offer methods to write assertions that are far more concise. The framework allows the organization of tests into groups. Shoulda Matches holds compatibility with Minitest and RSpec. Shoulda Context holds the same relationship with the test unit and Minitest.

## 8. Spork

![](https://cdn-images-1.medium.com/max/2000/0*p5tp9iU_OOsHwAgZ.png)

Spork is one of the best Ruby testing frameworks that forks a server copy every time testers run tests. As a result, it ensures a clean state of testing. The most significant benefit is that the runs don’t corrupt as time passes and are more solid. Thanks to the proper handling of modules, it can also efficiently work with any other Ruby framework of your choice.

Some testing frameworks it supports include RSpec, Cucumber, and Test::Unit. You don’t need an application framework for Spork to work. At the initial level, you might not notice the automatic loading of some files since they load during the startup. Sometimes, changes and projects can call for a restart.

## 9. Aruba

![](https://cdn-images-1.medium.com/max/2000/0*qQMD1ZlXSkNXtDFm.png)

Aruba is a Ruby testing framework that allows testing of command line applications with Minitest, RSpec, or Cucumber–Ruby. Detailed documentation is available to help users get started with the framework.

Although Aruba doesn’t fully support Windows, it has proven successful on macOS and Linux in CI. Only RSpec tests can run flawlessly on Windows. It supports versions 4 and above until 8. The supported Ruby versions include CRuby 2.5, 2.6, 2.7, 3.0, and 3.1 and JRuby 9.2.

***Perform browser [automation testing](https://www.lambdatest.com/automation-testing?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=webpage) on the most powerful cloud infrastructure. Leverage LambdaTest automation testing for faster, reliable and scalable experience on cloud.***

## 10. Phony

![](https://cdn-images-1.medium.com/max/2000/0*-9ca3M3DRkELjl09.png)

Every phone number on the planet will eventually be able to be split, formatted, or normalized with Phony. In other words, this gem is responsible for normalizing, formatting, and splitting E164 numbers, including a country code. It only works within international numbers like 61 412 345 678.

The framework has been widely used in Zendesk, Socialcam, and Airbnb. It makes use of approximately 1 MB for each Ruby process. Normalization is responsible for removing a number’s non-numeric characters. On the other hand, the format is responsible for formatting a normalized number depending on the predominant formatting of a country.

***Need a great solution for [Safari for windows](https://www.lambdatest.com/safari-browser-for-windows?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=webpage) browser testing? Forget about emulators or simulators — use real online browsers. Try LambdaTest for free.***

## 11. Bacon

![](https://cdn-images-1.medium.com/max/2000/0*fHALUZ-kkLom-KvZ.png)

Bacon is a feature-rich small clone of RSpec that has a weight of 350 LoC. It offers support for Knock, Autotest, and TAP. The first public release came out on January 7th, 2008, followed by a second one on July 6th. The third public release was on November 3rd, 2008, and the fourth came out on December 21st, 2012.

Before your context’s first specification, you must define before and after. It’s easy to define shared contexts, but you can’t execute them. However, you can use them with recurring specifications and include them with other contexts, such as **behaves_like**.

## 12. RR

![](https://cdn-images-1.medium.com/max/2000/0*Ng62m0oLznlXwCYT.png)

Originally developed by Brian Takita, RR is one of the leading test double Ruby testing frameworks offering a comprehensive choice of double techniques and terse syntax. If you already use the test framework, RR will hook itself onto your existing framework once you have loaded it.

Available through the MIT license, this framework works with Ruby 2.4, 2.5, 2.6, 2.7, 3.0, and JRuby 1.7.4. The frameworks it supports include Test::Unit through test-unit-rr, Minitest 4 and 5, and RSpec 2. When using RR, you can run multiple test suites via rake tasks.

## 13. Howitzer

![](https://cdn-images-1.medium.com/max/2694/0*jEUwPFc1tC1HSJL3.png)

Howitzer is a Ruby-based acceptance testing framework focused solely on web applications. The core aim of this framework is to fasten the pace of test development and offer the necessary assistance to users.

It provides support for the following:

**Operating Systems:**

* macOS

* Linux

* Windows

**Real Browsers:**

* Internet Explorer

* Firefox

* Google Chrome

* Safari

* Edge

**Mail Services:**

* Gmail

* Mailgun

* Mailtrap

**CI Tools:**

* Jenkins

* Teamcity

* Bamboo

* CircleCI

* Travis,

* Github Actions

The most significant benefits of using this framework include quick installation, the fast configuration of [test infrastructure,](https://www.lambdatest.com/learning-hub/test-infrastructure?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=learning_hub) intuitiveness, and the choice of the BDD.

Watch the video to learn how to implement BDD testing for quality test automation:


{% youtube _w-lf4VwXxY %}

Subscribe to the [LambdaTest YouTube Channel](https://www.youtube.com/c/LambdaTest?sub_confirmation=1) and stay up to date with the latest tutorials around [test automation](https://www.lambdatest.com/automation-testing?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=webpage), automated app testing, [Playwright browser testing](https://www.lambdatest.com/playwright-testing?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=webpage), and more.

***Perform browser [automation testing](https://www.lambdatest.com/automation-testing?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=webpage) on the most powerful cloud infrastructure. Leverage LambdaTest automation testing for faster, reliable and scalable experience on cloud.***

## 14. Pundit Matchers

![](https://cdn-images-1.medium.com/max/2698/0*EylFGSTb3YaRrI0q.png)

If you want to test Pundit authorization policies, the RSpec Matchers set is the way to go. Available under the MIT license, Pundit Matchers offers an easy setup and a hassle-free configuration.

Installation of Pundit gems and RSpec–rails are the primary requirements to use the framework. For the [test strategy](https://www.lambdatest.com/learning-hub/test-strategy?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=learning_hub), this framework makes assumptions regarding your policy spec file structure after declaring a subject. You can also test multiple actions at once.

## 15. Emoji-RSpec

![](https://cdn-images-1.medium.com/max/2694/0*k-TF6Cb7mdx7EwEL.png)

Emoji RSpec is a framework better known as custom emoji formatters. These formatters are meant for use along with the test output. Emoji-RSpec 1.x offers complete support for 2.0 and backward aid for versions 1.9.2 and 3.0.x, which calls for users to maintain support for 1.8.7. It allows pull requests but prevents the addition of new formats.

***Upload your app for testing within seconds using the LambdaTest cloud and perform mobile app testing right away. Find bugs early on, improve performance, quality, user experience and make the most of [mobile app testing](https://www.lambdatest.com/mobile-app-testing?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=webpage) on LambdaTest.***

## 16. Cutest

![](https://cdn-images-1.medium.com/max/2692/0*Ji1-1OJtq74LlliB.png)

Cutest is a Ruby testing framework focused primarily on isolated tests. Testers run every test file in a way that facilitates avoiding the shared state. After finding a failure, it offers a detailed report of what went down and how you can pinpoint the error.

Using the scope command guarantees that there wouldn’t be any sharing of instance variables between tests. The prepare command facilitates the execution of blocks before every test. The setup command executes the setup block before every test and passes the outcome to the test block as a parameter.

## 17. RSpec Clone

![](https://cdn-images-1.medium.com/max/2696/0*eH9Me5s9SwzMJIHr.png)

RSpec Clone is a minimalistic Ruby testing framework that has all the necessary components for the same. Available under the MIT license, this framework helps lower code complexity and avoid false positives and negatives. Thanks to its alternative syntax, it helps in preventing interface overload.

With the RSpec clone, users have a structure to write code behavior executable instances. You can also write these examples in a method similar to plain English, including a DSL. Whatever your project settings, you can run rake spec for a project spec.

## 18. Riot

![](https://cdn-images-1.medium.com/max/2698/0*Qk16agdoRJoUgkW_.png)

Riot is one of the best Ruby testing frameworks for unit testing that is contextual, expressive, and fast-paced. Since it doesn’t run teardown and set up sequences before every test and after its completion, the speed of [test execution](https://www.lambdatest.com/learning-hub/test-execution?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=learning_hub) is higher.

In general, you should always avoid mutating objects. But when you are using Riot, that’s precisely what you must do. You can also call setup multiple times. It also doesn’t matter how many times you use this.

***Try this [Selenium online](https://www.lambdatest.com/selenium-automation?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=webpage) Grid to run your browser automation testing scripts. Our cloud infrastructure has 3000+ desktop & mobile environments. Try for free.***

## 19. Turnip

![](https://cdn-images-1.medium.com/max/2692/0*JZCMNO5uh-wSfUgc.png)

Turnip is a Ruby testing framework for integration and acceptance testing. It’s a Gherkin extension for RSpec that helps solve problems while using Cucumber to write specifications. In other words, it is an open-source gem that performs [end to end testing](https://www.lambdatest.com/learning-hub/end-to-end-testing?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=learning_hub) of front-end functionality and components.

You can also use Turnip for testing server-side components and behavior. When you integrate with RSpec, this framework can access the RSpec-mocks gem. You can also declare example context and groups by directly integrating Turnip into the RSpec [test suite](https://www.lambdatest.com/learning-hub/test-suite?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=learning_hub).

## 20. TMF

![](https://cdn-images-1.medium.com/max/2694/0*ac0VQM1MJD8BRMZz.png)

TMF joins the list of the many minimalistic ruby test frameworks. It belongs in the unit testing category and is a small testing tool. All you need to do is copy the entire code to be done.

This framework just uses two methods for testing. They are:

* Stub

* Assert

The best part about TMF is that, even though it’s a minimal testing tool, testers can efficiently perform testing of various back-end components. It’s perfect for tests that don’t require a hefty feature set.

## 21. Rufo

![](https://cdn-images-1.medium.com/max/2700/0*yMEFs2sO86U6uK59.png)

Rufo is a Ruby formatter with the primary intention of being used through the command line for auto-formatting files on demand or saving. There is a single Ruby code format, and testers have to ensure the adherence of their code to it. It supports Ruby versions 2.4.5 and higher.

You can even use Rufo to develop your plugins. The default configuration of this framework preserves decisions. This enables team members to use their text editor of choice without the whole team having to switch to it. However, the framework offers support for limited configurations.

## Executing Selenium Ruby automation testing on the cloud

You can execute Selenium Ruby automation testing on a cloud by using a cloud-based Selenium Grid, such as LambdaTest. This allows you to run your tests on various browser and operating system combinations without maintaining a large infrastructure.

LambdaTest is a [cross browser testing](https://www.lambdatest.com/?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=learning_hub) platform that supports all best Ruby testing frameworks like RSpec, Capybara, Test::Unit, etc. It lets you perform [Selenium Ruby](https://www.lambdatest.com/blog/selenium-ruby/) automation testing across 3000+ real browsers and operating systems on an [online Selenium Grid](https://www.lambdatest.com/selenium-automation?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=webpage).

Here’s a glimpse of the LambdaTest cloud-based grid for [Selenium automation](https://www.lambdatest.com/selenium-automation?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=webpage) testing.

{% youtube WZlsHlReRww %}

Here are the steps:

**Step 1**: [Sign up for free](https://accounts.lambdatest.com/register?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=webpage) and Login to the LambdaTest platform.

![](https://cdn-images-1.medium.com/max/3840/0*voLxOmPRil8q_pFZ.png)

**Step 2**: Click on the **Automation** tab present in the left navigation, which provides you with the following options:

* Builds

* Test Archive

* Analytics

Choose the language or testing framework that’s present on the UI.

![](https://cdn-images-1.medium.com/max/3792/0*fnEU1PRtQJs1sStA.png)

**Step 3**: You can choose any framework of your choice under Ruby and configure the test.

![](https://cdn-images-1.medium.com/max/2520/0*J94fh4SPlkBYFaok.png)

If you are a developer or tester looking to improve your Ruby skills, the Selenium Ruby 101 certification from LambdaTest may be a valuable resource.

***Check out this online [Selenium Automation](https://www.lambdatest.com/selenium-automation?utm_source=devto&utm_medium=organic&utm_campaign=feb_13kj&utm_term=kj&utm_content=webpage) Grid to run your browser automation testing scripts. Our cloud infrastructure has 3000+ desktop & mobile environments. Try for free.***

## Summing It Up!

Ruby has transformed the web world and will continue to do so. But to fully use its potential, choosing the best Ruby testing framework appropriate for your requirements is vital. In this list, we have mentioned the 21 Best Ruby testing frameworks for 2023 by being as comprehensive as possible regarding functionality, productivity, and efficiency.

Now you have a wide array of outstanding Ruby frameworks at your disposal. Since we have already done extensive shortlisting for you, all you need to do is go for the one that meets your needs. If you think we missed something, sound off in the comments below.