2014-06-07 13 views
6

Ho avuto questo problema esatto per mesi, attraverso più versioni di ciascun componente coinvolto (karma, socket.io, salsa-connect). Attualmente sto lavorando su Karma 12.16.karma-sauce-launcher disconnette ogni sessione di test risultante in esecuzioni fallite con IE e Safari

Fondamentalmente, quando si utilizza https://github.com/karma-runner/karma-sauce-launcher, i browser Safari e IE hanno avviato la disconnessione di ogni singola esecuzione di test con conseguente esecuzione di test parziale. Il registro Karma rilevante è

Driving the web on session: abf7c976abf1420a9c72b3e06c655040  
DEBUG [wd]: > RESPONSE init({"base":"SauceLabs","browserName":"internet explorer","platform":"Windows 8.1","version":"11","tags":[],"name":"Karma and Sauce Labs demo","record-video":false,"record-screenshots":true,"build":null,"device-orientation":null,"disable-popup-handler":true}) "abf7c976abf1420a9c72b3e06c655040",null 
INFO [launcher.sauce]: internet explorer 11 (Windows 8.1) session at https://saucelabs.com/tests/abf7c976abf1420a9c72b3e06c655040 
DEBUG [launcher.sauce]: WebDriver channel for internet explorer 11 (Windows 8.1) instantiated, opening http://localhost:9876/?id=15483642 
DEBUG [wd]: > CALL get("http://localhost:9876/?id=15483642") 
DEBUG [wd]: > POST /session/:sessionID/url {"url":"http://localhost:9876/?id=15483642"} 
DEBUG [web-server]: serving: /Volumes/OSXSTORAGE/Users/a/Dropbox/a/WebstormProjects/a-ui/node_modules/karma/static/client.html 
DEBUG [web-server]: serving: /Volumes/OSXSTORAGE/Users/a/Dropbox/a/WebstormProjects/a-ui/node_modules/karma/static/karma.js 
DEBUG [wd]: > RESPONSE get("http://localhost:9876/?id=15483642") 
DEBUG [karma]: A browser has connected on socket xXySXoeppVtPhAr8FVR4 
INFO [IE 11.0.0 (Windows)]: Connected on socket xXySXoeppVtPhAr8FVR4 with id 15483642 
DEBUG [launcher]: internet explorer 11 (Windows 8.1) on SauceLabs (id 15483642) captured in 17.693 secs 
DEBUG [web-server]: serving: /Volumes/OSXSTORAGE/Users/a/Dropbox/a/WebstormProjects/a-ui/node_modules/karma/static/context.html 
DEBUG [web-server]: serving (cached): /Volumes/OSXSTORAGE/Users/a/Dropbox/a/WebstormProjects/a-ui/src/components/angular/angular.js 
................................................................................ 
..............DEBUG [karma]: A browser has connected on socket mGf0VzQ8DKdfW_NSFVR5 
DEBUG [IE 11.0.0 (Windows)]: New connection mGf0VzQ8DKdfW_NSFVR5 (already have xXySXoeppVtPhAr8FVR4) 
WARN [IE 11.0.0 (Windows)]: Disconnected (1 times), because no message in 10000 ms. 

IE 11.0.0 (Windows): Executed 94 of 94 DISCONNECTED (11.481 secs/0.757 secs) 
DEBUG [launcher.sauce]: Shutting down the internet explorer 11 (Windows 8.1) driver 
DEBUG [wd]: > CALL get("about:blank") 
DEBUG [wd]: > POST /session/:sessionID/url {"url":"about:blank"} 
DEBUG [karma]: Run complete, exitting. 
DEBUG [launcher]: Disconnecting all browsers 
DEBUG [wd]: > RESPONSE get("about:blank") 
DEBUG [wd]: > CALL quit() 
DEBUG [wd]: > DELETE /session/:sessionID 
DEBUG [wd]: 
Ending your web drivage.. 

DEBUG [wd]: > RESPONSE quit() 

ho cercato aumentando browserNoActivityTimeout a 60000, ma che appena si traduce nelle prove in mancanza, dopo 60 anni invece di 10s. Ognuno di questi fallito ha il seguente:

DEBUG [karma]: A browser has connected on socket mGf0VzQ8DKdfW_NSFVR5 
DEBUG [IE 11.0.0 (Windows)]: New connection mGf0VzQ8DKdfW_NSFVR5 (already have xXySXoeppVtPhAr8FVR4) 
WARN [IE 11.0.0 (Windows)]: Disconnected (1 times), because no message in 10000 ms. 
IE 11.0.0 (Windows): Executed 94 of 94 DISCONNECTED (11.481 secs/0.757 secs) 

A seconda del browser, a volte si eseguirà solo 50 test (eseguito 50 di 94 scollegato), e su altri è eseguirà tutti i test, ma ancora essere considerato un test fallito. Non ho mai visto questo si verifica con Chrome o Firefox.

Lo stesso file karma.conf verrà eseguito ogni volta localmente senza problemi. Qualcuno ha incontrato questo? Ho raggiunto il supporto di saucelabs, ma stanno iniziando a insistere sul fatto che si tratta di un problema di lancio di karma-salsa.

Karma.conf:

var fs = require('fs'); 

module.exports = function(config) { 

    // Use ENV vars on Travis and sauce.json locally to get credentials 
    if (!process.env.SAUCE_USERNAME) { 
    if (!fs.existsSync('sauce.json')) { 
     console.log('Create a sauce.json with your credentials based on the sauce-sample.json file.'); 
     process.exit(1); 
    } else { 
     process.env.SAUCE_USERNAME = require('./../sauce').username; 
     process.env.SAUCE_ACCESS_KEY = require('./../sauce').accessKey; 
    } 
    } 

    // Browsers to run on Sauce Labs 
    var customLaunchers = { 

    sl_safari_ml: { 
     base: 'SauceLabs', 
     browserName: 'safari', 
     platform: 'OS X 10.9' 

    } 
    }; 

    config.set({ 

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


    // frameworks to use 
    // available frameworks: https://npmjs.org/browse/keyword/karma-adapter 
    frameworks: ['jasmine'], 


    // list of files/patterns to load in the browser 
    files: [ 
     'src/components/jquery/dist/jquery.js', 
     'src/components/angular/angular.js', 
     'src/components/angular-mocks/angular-mocks.js', 
     'src/components/angular-cookies/angular-cookies.js', 
     'src/components/angular-sanitize/angular-sanitize.js', 
     'src/components/angular-ui-router/release/angular-ui-router.js', 
     'src/components/angular-animate/angular-animate.js', 
     'src/components/angular-strap/dist/angular-strap.js', 
     'src/components/angular-strap/dist/angular-strap.tpl.js', 
     'src/components/speakingurl/lib/index.js', 
     'src/app/**/*.js', 
     'src/app/common/templates/*.html' 


    ], 

    exclude: [ 
     'src/app/**/*.e2e.spec.js' 

    ], 
    ngHtml2JsPreprocessor: { 
     stripPrefix: 'src/app/common/', 
     moduleName: 'mywire.templates' 
    }, 
    preprocessors: { 
     // load templates 
     'src/app/common/templates/*.html': ['ng-html2js'] 
    }, 
    // test results reporter to use 
    // possible values: 'dots', 'progress' 
    // available reporters: https://npmjs.org/browse/keyword/karma-reporter 
    reporters: ['dots'], 


    // web server port 
    port: 9876, 

    colors: true, 

    // level of logging 
    // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG 
    logLevel: config.LOG_INFO, 

    sauceLabs: { 
     testName: 'Karma and Sauce Labs demo', 
     startConnect: false 
    }, 
    browserNoActivityTimeout: 60000, 
    captureTimeout: 120000, 
    customLaunchers: customLaunchers, 

    // start these browsers 
    // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher 
    browsers: Object.keys(customLaunchers), 
    singleRun: true 
    }); 
}; 

risposta

10

partire Karma versione 0.12 ci sono alcune impostazioni più timeout aggiunto.

Aggiungendoli alla mia configurazione di karma risolto questo problema per me.

browserDisconnectTimeout 
  • Tipo: Numero
  • predefinito: 2000
  • Descrizione: Quanto tempo Karma attesa per un browser per ricollegare (in ms). Con una connessione instabile è piuttosto comune il comune che il browser si disconnette ma l'esecuzione effettiva è in esecuzione senza problemi. Karma non considera una disconnessione come errore immediato e piuttosto aspetta browserDisconnectTimeout ms. Se il browser si riconnette durante quel periodo, tutto va bene.

-

browserDisconnectTolerance 
  • Tipo: Numero
  • Default: 0
  • Descrizione: Il numero di disconnessioni tollerati. Il valore disconnectTolerance rappresenta il numero massimo di tentativi che un browser tenterà in caso di disconnessione. Di solito qualsiasi disconnessione è considerata come un fallimento, ma questa opzione consente di definire un livello di tolleranza quando c'è un collegamento di rete traballante tra il server karma ei browser.

-

browserNoActivityTimeout 
  • Tipo: Numero
  • predefinito: 10000
  • Descrizione: Quanto tempo Karma attendere un messaggio da un browser prima di scollegarlo (in ms). Se, durante l'esecuzione, Karma non riceve alcun messaggio da un browser all'interno di browserNoActivityTimeout ms, disconnetterà il browser.

fonte: http://karma-runner.github.io/0.12/config/configuration-file.html

Altri consigli: http://oligofren.wordpress.com/2014/05/27/running-karma-tests-on-browserstack/