2014-10-29 3 views
0

Выполнение следующего теста жасмина под webdriver.io следующим образом: node path/to/test/script.js, тест выполняется (веб-браузер вытягивается, посещается целевая страница) и благодаря последней строке , функции жасмина 'it' (ниже) выполняют (без последней строки, они этого не делают, хотя функция «описать» все еще работает).Тест Jasmine не дает отчета о пропуске/сбое под webdriver.io

Но жасмин не предоставляет никакого результата отчета для тестов «it» и утверждений «ожидать»; на консоли нет ничего жасмина. Нет результата «pass/fail» и т. Д.

Как получить жасмин, чтобы сделать отчет, и esp. тот, который читается Дженкинсом?

Проблема сценария тестирования:

var webdriverjs = require('foo-bar/node_modules/webdriverio'); 
var jasmine = require('foo-bar/node_modules/jasmine-node'); 

var options = { 
    port: 4445, 
    desiredCapabilities: { 
     browserName: process.argv[2] || 'phantomjs' 
    } 
}; 

describe('my webdriverjs tests', function() { 
    var client; 

    jasmine.DEFAULT_TIMEOUT_INTERVAL = 9999999; 

    beforeEach(function() { 
    client = webdriverjs.remote(options); 
    client.init(); 
    }); 

    it('shows the correct title', function (done) { 
    client 
     .url('http://localhost:4444').getTitle(function(err, title) { 
     expect(title).toBe('foo bar'); 
     }).call(done); 
    }); 

    afterEach(function(done) { 
    client.end(done); 
    }); 
}); 

jasmine.getEnv().execute(); 

Примечание: Поперечный отправленный здесь: https://groups.google.com/forum/#!topic/webdriverio/-EOrQ003B9I

ответ

0

я столкнулся с некоторыми из тех же проблем, когда я смотрел на это. Большая проблема заключается в том, что этот тест должен выполняться как тест жасмина, а не тест webdriver.

decribe('my webdriverio tests with jasmine', function(){ 
    var client; 

    beforeEach(function(){ 
     client = require('path/to/webdriverio').remote({ 
      desiredCapabilities: {browserName:'safari'} 
     }).init.url('https://www.stackoverflow'); 
    }, 5000); 

    afterEach(function(done){ 
     client.end(done); 
    }, 5000); 

    it('runs a very simple test',function(done){ 
     client.getTitle(function(err,result){ 
      expect(result).toBe('Stack Overflow'); 
     }).call(done); 
    }, 5000); 
}); 

Теперь, чтобы запустить этот тест, вы бы просто запустить типичную jasmine-node команду из вашего терминала.

0

Это относится к соглашению об именах, которое вы используете. Во-первых, вам нужно удалить последнюю строку: jasmine.getEnv().execute(); затем выполнить команду jasmine-node с --matchall флагом:

jasmine-node --matchall path/to/test/script.js 

Если вы назвали ваш файл script_spec.js, то вы можете запустить его без --matchall флага.

Это также предполагается, что у вас есть jasmine-node, установленный по всему миру. Если вы хотите использовать локальную node_modules зависимости, то вам необходимо выполнить следующую команду:

./node_modules/jasmine-node/bin/jasmine-node --matchall path/to/test/script.js 
0

При использовании жасмина-узел модуля, который вы должны запустить спецификацию с

node_modules/jasmine-node/bin/jasmine-node $TEST_DIRECTORY

И ваш тест должен заканчиваться на * spec.js, * spec.coffee или * spec.litcoffee как docs.

И jasmine.getEnv().execute(); и var jasmine = require('foo-bar/node_modules/jasmine-node'); не должно быть в вашем скрипте.

Смежные вопросы