Support custom context file #1277

Closed
wants to merge 1 commit into
from

Projects

None yet

2 participants

@krasimir
krasimir commented Jan 2, 2015

Hello,

Karma is a wonderful spec runner. However, it is kinda design to work with AngularJS. I'm at the moment exploring various ways of testing client side code. Some frameworks (or apps) require having <script> or HTML tags on the page in order to work. I'm using TODOMVC as a example and I'm trying to test it by using different tools. This PR introduces one more property to the client configuration item.

module.exports = function(config) {
  config.set({

    // base path that will be used to resolve all patterns (eg. files, exclude)
    basePath: '',


    client: {
      contextFile: '/TestRunner.html'
    },

    ...

The content of the TestRunner.html is the same as the content of static/context.html. The only one difference is that I added what I needed there. In my case this was a Backbone app and I placed the templates along with the application's HTML. Here is how my test suite looks like:

describe("Testing TODOMVC", function () {

    var setText = function(text, selector) {
        var input = $(selector || '#new-todo');
        var e = $.Event("keypress");
        e.which = e.keyCode = 13;
        return input.val(text).trigger(e);
    };

    before(function() {
        window.localStorage.removeItem('todos-backbone', '');
        app.todos.reset();
    });

    it("Adding new TODOs", function () {
        setText('TODO A');
        setText('TODO B');
        expect($('#todo-list li').length).to.be.equal(2);
    });

    it("Deleting TODO", function () {
        $('#todo-list li:first-child .destroy').click();
        expect($('#todo-list li').length).to.be.equal(1);
    });

    it("Edit and add TODOs", function () {
        setText('A new TODO');
        $('#todo-list li:first-child').addClass('editing');
        setText('A new TODO', '#todo-list li:first-child .edit').blur();
        expect($('#todo-list li').length).to.be.equal(2);
        expect($('#todo-list li label').eq(0).text()).to.be.equal($('#todo-list li label').eq(1).text())
    });

});

Ref: #488

@dignifiedquire
Member

Closing due to inactivity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment