Ruby

JavaScript

Unit Testing, Intergration Testing

Unit Testing

Domain Specific Language (DSL) testing solution for Ruby code

It focuses on empowering Test Driven Development (TDD). RSpec contains multiple smaller libraries, which may be independently used with other testing frameworks.

D.O.H means Dojo Objective Harness, it's a test framework for the DOJO web apps which tests and runs on the browser and on cloud test execution services like Browserstack

Dojo is a Typescript framework build for modern web application, and D.O.H is a basically unit test library to test JavaScript functions and custom widgets

xUnitSet of frameworks originating from SUnit (Smalltalk's testing framework). They share similar structure and functionality.

Yes

Yes, but it differs from more traiditional xUnit solutions. Its tests are written in a "Tests as Specification" manner. This means that the terminology used in RSpec is adjusted to a language more fitting for specification.

No

Client-sideAllows testing code execution on the client, such as a web browser

Yes

RSpec is used to primarily test the behaviour of applications or individual components so it can test front-end behaviour as well - you can use capybara gem with RSpec for that.

Yes

DOH is both flexible and extendable and runs in many environments including many browsers to test various front-end functionalities and components

Server-sideAllows testing the bahovior of a server-side code

Yes

You can test server-side behaviour with Rspec

Yes

Pieces of back-end code can be tested with DOH as it performs Unit tests. It is flexible enough to test server-side behaviour and functionality

FixturesAllows defining a fixed, specific states of data (fixtures) that are test-local. This ensures specific environment for a single test

Yes

RSpec does contain fixture methods

It has various fixture methods like setUp(), tearDown() and Performance test fixtures which are just like a regular test fixtures, but with extra options. Specifically, it uses 'testType' to mark it as a "perf" test, which instructs the D.O.H. runner to treat the tests as performance and use the calibrate and execute test runner

Group fixturesAllows defining a fixed, specific states of data for a group of tests (group-fixtures). This ensures specific environment for a given group of tests.

Yes

Group fixture methods are supported

Yes

It supports group fixtures

GeneratorsSupports data generators for tests. Data generators generate input data for test. The test is then run for each input data produced in this way.

Yes

RSpec contains generators for example intergration_'test_name' which will save a spec inside the spec/requests folder

N/A

LicenceLicence type governing the use and redistribution of the software

MIT License

FreeBSD License

MocksMocks are objects that simulate the behavior of real objects. Using mocks allows testing some part of the code in isolation (with other parts mocked when needed)

Yes

Available through rspec-mocks gem.

N/A

GroupingAllows organizing tests in groups

Yes

Allows declaring example groups and contexts.

Yes

There is a function that allows you to group tests, the 'doh.register(...)' function. It's most commonly used for registering Unit Tests

OtherOther useful information about the testing framework

How to run parallel tests on your CI server to execute 1-hour test suite in 2 minutes?

Do you wait 15 minutes or even hours to run tests? Slow tests mean wasted developers time

Have you tried to run tests in parallel? How to split tests across parallel CI jobs to avoid bottleneck job?

Run tests on CI with Knapsack Pro to ensure parallel jobs finish work at a similar time. Get the fastest CI build time!

Without Knapsack Pro

you have to wait 20 minutes for slow tests running too long on red node

Loading...

Run fast parallel CI build with Knapsack Pro

CI build completes work in only 10 minutes because Knapsack Pro ensures all parallel nodes finish work at a similar time

Loading...

You can even run 20 parallel nodes to complete your CI build in 2 minutes

How it works

1. Install Knapsack Pro client in your project

2. Add Knapsack Pro client to your current CI server and run your tests in parallel

Knapsack Pro in Queue Mode will split tests in a dynamic way across parallel CI nodes to ensure each CI node finishes work at a similar time.
Thanks to that your CI build time is as fast as possible. It works with many supported CI servers.

We are using CircleCI and we noticed that builds were being limited by the slowest parallelized container. Knapsack Pro was really east to setup and we saw huge improvements right away. Thank you for making this tool!

I just logged into my account expecting it to say that I needed to add a credit card and was so surprised and delighted to see the trial doesn't count usage by calendar days but by testing days! This is incredible! I love it!!!

I just wanted to say that I really appreciate that small but very huge feature. Thank you for being so thoughtful :)