How to run single e2e test with grunt and protractor

redwulf picture redwulf · Apr 23, 2014 · Viewed 9.8k times · Source

I'm assuming this is possible and actually pretty simple, but I'm new to both grunt and protractor and I was not able to find the answer online (maybe I used wrong search criteria).

I have the following e2e test in file test/e2e/Recipients.js:

describe('Recipients Tab', function() {

    beforeEach(function () {
        browser.get('#/recipients');
    });

    it('should have no e-mail list', function () {
        expect(element(by.css('accordion')).isPresent()).toBe(false);
    });
});

Currently, I'm doing this:

grunt e2e

My protractor config file:

exports.config = {
    seleniumAddress: 'http://localhost:4444/wd/hub',
    capabilities: {
        'browserName': 'chrome'
    },
    specs: ['../e2e/**/*.js'],
    baseUrl : 'http://localhost:8080/spr',

    jasmineNodeOpts: {
        showColors: true // Use colors in the command line report.
    }
};

Of course this runs all my tests, but while I'm developing a specific test, I don't want to run the entire battery of tests. I want to run this one file.

How can I do that? Is there any flag or something?

Thanks

Answer

alecxe picture alecxe · Aug 4, 2014

Alternatively, organize your tests as a set of test suites:

exports.config = {
  seleniumAddress: 'http://localhost:4444/wd/hub',
  capabilities: { 'browserName': 'chrome' },

  suites: {
    homepage: 'tests/e2e/homepage/**/*Spec.js',
    search: ['tests/e2e/contact_search/**/*Spec.js']
  },

  jasmineNodeOpts: { showColors: true }
};

And run only specific test suites, using --suite command line argument:

protractor protractor.conf.js --suite homepage

See also: Protractor for AngularJS.