2017-02-06 6 views
1

Я тестирую e2e с помощью транспортира. Когда мое приложение работает на сервере, тесты проходят нормально, а браузер закрывается после этого, однако, когда сервер отключен, браузер остается (Firefox, Chrome). Это нормально на моей локальной машине, но я экспериментирую с выполнением тестов на удаленной машине CI и боюсь, что тесты могут порождать несколько окон браузера, если сервер не запускается. Как убедиться, что транспортир закрывает окно браузера в такой ситуации?Транспортир не закрывает браузер, когда сервер недоступен

Вот моя конфигурация:

exports.config = { 
    allScriptsTimeout: 11000, 
    specs: [ 
      '../test/e2e/*.js' 
    ], 
    capabilities: { 
     'browserName': 'firefox' 
    }, 
    baseUrl: 'http://localhost:8000/', 
    framework: 'jasmine', 
    jasmineNodeOpts: { 
     defaultTimeoutInterval: 30000 
    } 
}; 

и тест:

'use strict'; 

describe('typicaClient', function() { 
    browser.get('index.html'); 

    it('test', function() { 
     expect('str').toMatch('str'); 
    }); 
}); 

ответ

2

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

Ознакомьтесь с приведенным ниже примером. Эта ошибка брошена spawn() процесса необработанное на транспортир и завершается с кодом ошибки - 199

describe('sample test', function(){ 
    it('Sample Check', function(){ 
     browser.get("http://www.protractortest.org/#/"); 
     browser.sleep(5000); 
     var terminal = require('child_process').spawn('34e3545') 
    }); 
}); 

Выход:

[18:26:46] I/local - Starting selenium standalone server... 
[18:26:46] I/launcher - Running 1 instances of WebDriver 
[18:26:46] I/local - Selenium standalone server started at http://192.168.1.5:61146/wd/hub 
Started 
[18:26:49] E/launcher - spawn 34e3545 ENOENT 
[18:26:49] E/launcher - Error: spawn 34e3545 ENOENT 
    at exports._errnoException (util.js:873:11) 
    at Process.ChildProcess._handle.onexit (internal/child_process.js:178:32) 
    at onErrorNT (internal/child_process.js:344:16) 
    at nextTickCallbackWith2Args (node.js:442:9) 
    at process._tickCallback (node.js:356:17) 
[18:26:49] E/launcher - Process exited with error code 199 

Чтобы избежать этого, обрабатывать грациозно ошибка в не-транспортир команды

describe('sample test', function(){ 
    it('Sample Check', function(){ 
     browser.get("http://www.protractortest.org/#/"); 
     browser.sleep(5000); 
     var terminal = require('child_process').spawn('34e3545').on('error', function(err) { 
      fail('Test is failing because we provided an invalid process') 
     }); 
    }); 
}); 

Выход в этом случае:

[18:57:22] I/local - Starting selenium standalone server... 
[18:57:22] I/launcher - Running 1 instances of WebDriver 
[18:57:22] I/local - Selenium standalone server started at http://192.168.1.5:49867/wd/hub 
Started 
F 

Failures: 
1) sample test Sample Check 
    Message: 
    Failed: Test is failing because we provided an invalid process 
    Stack: 
    Error: Failed: Test is failing because we provided an invalid process 
     at ChildProcess.<anonymous> (C:\Users\ayannam\WebstormProjects\demo\errorHandle.js:7:13) 
     at emitOne (events.js:77:13) 
     at ChildProcess.emit (events.js:169:7) 
     at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12) 

1 spec, 1 failure 
Finished in 6.582 seconds 

Посмотреть этот случай Un рукоятью исключение обрабатывается и транспортир выдает код ошибки - 1, который изящно обрабатывается

+0

Спасибо за ответ, но тест ничего не называй кроме 'browser.get (" индекс .html ")' до сих пор (пожалуйста, посмотрите на вопрос, я добавил тест), и 'get()' не возвращает никаких значений. Как обрабатывать ошибку в этом случае? –

+0

Большое спасибо, 'browser.get (" index.html "). Catch (myCallback)' выполнил эту работу. –

+0

@ Andriy ... рад, что это помогло ... да, если исключение - из команды транспортира, вы можете поймать исключение, поскольку команды транспортира возвращают отклоненное обещание .... и затем сбой тестового примера в соответствии с – AdityaReddy