How to reuse beforeEach/afterEach in Jasmine JS?

dry, jasmine, javascript, testing

Solution

I think this is partially examined in this blog post and also answered here but i'm adding an adapted answer for your example:

Reusable code:

function sharedSetup(startPage) {
    beforeEach(function() {
        login_as_admin();
        browser().navigateTo(startPage);
    });

    afterEach(function() {
        logout();
    });
};

How to use it:

describe('Services Page', function() {
    sharedSetup('/services');

    it('Some test for services page', function() {});
});

describe('Administrators Page', function() {
    sharedSetup('/administrators');

    it('Some test for administrators page', function() {});
});

Problem

When writing tests with JasmineJS I have many tests that have similar beforeEach/afterEach code. Is there a way to implement an inheritance model using JasmineJS test suites? I can group all tests in a single `describe` but in this case I will end with a single HUGE JS file containing all tests. I would like to split the tests for each page. Here is an example: ``` describe('Services Page', function() { beforeEach(function() { login_as_admin() }) beforeEach(function() { browser().navigateTo('/services') }) if('Some test for services page', function() {}) afterEach(function() { logout() }) }) describe('Administrators Page', function() { beforeEach(function() { login_as_admin() }) beforeEach(function() { browser().navigateTo('/administrators') }) if('Some test for administrators page', function() {}) afterEach(function() { logout() }) }) ```

Original source

Related problems