Running specific test cases in Jasmine or Mocha

I recently was working on writing end-to-end test cases using protractor on a project. Everything was working fine until the number of test cases increased to a lot and running the complete set of test cases took too much time. It was a pain to even think of running the e2e command since I knew it would take 10 minutes at least to get to a specific test.

I started searching for a way to run a specific test case and there were some solutions on Google and Stack Overflow which provided command-line arguments while running the test cases but they weren’t working. And others mentioned some changes to configuration files which I could not do since I was using a CLI which had encapsulated all of those files.

- Advertisement -

But controlling which test case to execute was something I needed to do. I wanted to run a single test case using jasmine. And I was not going to comment out test cases that I did not want to run or delete other files temporarily. I found a temporary workaround for running specific test cases in Jasmine. Instead of the tedious task of commenting test cases, all you need to do is add a character to your file/test cases!

This works for Mocha too.

Excluding specific test cases or specs

To exclude a specific test case or spec, all you need to do is use xit() or xdescribe() instead of it() and describe(). And that is it!

This means that all of the following test cases would get skipped during execution:

xdescribe("test spec", function() {
    it("test case 1", function() {
    });
    it("test case 2", function() {
    });
});
describe("test spec", function() {
    xit("test case", function() {
    });
});

And the output in the terminal would read:

Executed 0 of 3 test cases (skipped 3) SUCCESS

This still might not be what you want and you explicitly want only one test case to run. Excluding multiple specs or test cases in multiple files can still be a tedious task in that case.

Running specific test cases in Jasmine

You can use fit() or fdescribe() instead of it() and fdescribe() to achieve what is known as focussed test cases.

describe("test spec", function() {
    it("test case 1", function() {
    });
    fit("test case 2", function() {
    });
});

In the above example, only test case 2 would get executed. On execution, a single test (test case 2) case gets executed. Multiple fit() calls can be used to run specific test cases. And that is how you make running specific test cases an easy thing.

For Mocha, we can use it.only() instead of fit().

Hope this post helped you. Let us know if you have any queries in the comment section below.

Recent Articles

How to sort a Set in JavaScript

ES6 introduced the set data structure in JavaScript. But sets are not ordered abstract data structures. So there is no .sort() property...

Debugging CSS scroll using one simple style

I have been doing a lot of complicated front-end work off lately and that always brings me back to the class conundrum...

CSS :has a parent selector now

CSS now includes a :has selector that allows us to apply styles on the basis of what is happening inside an element....

How to fix “invalid active developer path” after MacOS update

If you are here, then you are getting an "invalid active developer path" error on running commands in the terminal after a...

Getting the value of an input element as a number without parseInt

Every once in a while, you come across something and you think, how did I not know this earlier? valueAsNumber is that thing...

Related Stories

2 Comments

  1. Do we have any ways in which we can control the test cases from the external file .
    For Eg: I have 5 it blocks in my spec . I want to run only 4th and 5th it blocks . However , I don’t want to edit my spec file . From an external file can I input the information(4 and 5 here ) of which it block to run ?

    • None that I know of. There were some configuration mechanisms that I found while Googling for this but none really worked for me. Why do you want to control it from an external file though?

Leave A Reply

Please enter your comment!
Please enter your name here

Hi there! Want some more knowledge?

Think that the knowledge shared is helpful? You might want to give our mailing list a try. We'll send you 2-4 emails a month, right when new posts come out.

Hi there! Want some more knowledge?

Think that the knowledge shared is helpful? You might want to give our mailing list a try. We'll send you 2-4 emails a month, right when new posts come out.