Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Skip subsequent Mocha tests from spec if one fails

I can't find a way how to stop some part of it's from run if one of them failed

I'm using mocha-as-promised, so the code might look different from as usuall

describe("remote promises", function() {   describe("browsing", function() {     describe("getting page", function() {       it("should navigate to test page and check title", function() {         this.timeout(TIMEOUT);         return browser.get("http://admc.io/wd/test-pages/guinea-pig.html").then(function() {           return browser.title();         }).then(function(title) {           return assert.ok(~title.indexOf("I am a page title - Sauce Labs"), "Wrong title!");         });       })       it("submit element should be clicked1", function() {         this.timeout(TIMEOUT);         return browser.elementById("submit").then(function(el) {           return browser.clickElement(el);         }).then(function() {             return browser["eval"]("window.location.href");           }).then(function(location) {             assert.ok(~location.indexOf("http://"), "Wrong location!");           });       })     });     describe("clicking submit", function() {       it("submit element should be clicked2", function() {         this.timeout(TIMEOUT);         return browser.elementById("submit").then(function(el) {           return browser.clickElement(el);         }).then(function() {             return browser["eval"]("window.location.href");           }).then(function(location) {             assert.ok(~location.indexOf("http://"), "Wrong location!");           });       });     });    }); }); 

and i want that if should navigate to test page and check title is failed then submit element should be clicked1 should be skipped

EDIT: seems i'm just making my tests wrong, will wait for some time before deleting question

EDIT:

as i replied in comment - i already received this answer in mocha google groups, but there are some other restrictions i not mentioned in question - i'm using grunt-simple-mocha and as i inspected code - there is no bail option when i pass options to mocha constructor

i failed to find where are options from command line are passed to Suite instance, and the only line where it may be as i see it is a

suite.bail(this.bail()); 

which looks weird for me

i think i will open issue at mocha github pages, maybe they will extend passed options with bail setting later, or just explain me what i did wrong and how i can solve my problem in other way

EDIT: and now, according to https://github.com/visionmedia/mocha/commit/f0b441ceef4998e570a794dcff951bf2330eb0c5 latest Mocha have bail option from the box. Thanks to authors!

like image 236
llamerr Avatar asked Dec 19 '12 14:12

llamerr


People also ask

How do you skip test cases in Mocha?

You can skip tests by placing an x in front of the describe or it block, or placing a . skip after it. describe('feature 1', function() {}); describe.

Do Mocha tests run sequentially?

According to it, tests are run synchronously. This only shows that ordered code is run in order. That doesn't happen by accident.

How do I run a single spec file in Mocha?

Run a Single Test File Using the mocha cli, you can easily specify an exact or wildcarded pattern that you want to run. This is accomplished with the grep option when running the mocha command. The spec must have some describe or it that matches the grep pattern, as in: describe('api', _ => { // ... })

Do Mocha tests run in parallel?

Mocha does not run individual tests in parallel. If you only have one test file, you'll be penalized for using parallel mode.


1 Answers

Mocha supports bailing after the first test failure, is that what you want?

From mocha --help:

-b, --bail                      bail after first test failure 
like image 164
Beau Avatar answered Sep 27 '22 19:09

Beau