2017-12-13 5 views
0

私はUbuntu 16.04でクロムヘッドレスで分度器テストを実行しています。テストは3ヶ月以上正常に動作していたが、その後、突然のテストは、以下のエラー -乱数が不自然に失敗する - スクリーンショットエラー:WebDriverError:クロムが到達できない

npm run e2e console - Chrome not reachable error from the very beginning of the test

Chrome not reachable error after successfully running few tests

Protractor configuration - 
    // Protractor configuration file, see link for more information 
    // 


    https://github.com/angular/protractor/blob/master/docs/referenceConf.js 

/*global jasmine */ 

var jasmineReporters = require('jasmine-reporters'); 

exports.config = { 
    allScriptsTimeout: 60000, 
    baseUrl: 'http://localhost:4200/', 
    suites: { 
    V3_Sanity: [ 
     './e2e/Flows/Sanity/**/analytics_dashboard.e2e-spec.ts', 
     './e2e/Flows/Sanity/**/executive_dashboard.e2e-spec.ts', 
     './e2e/Flows/Sanity/**/my_views.e2e-spec.ts', 
     './e2e/Flows/Sanity/**/question_analysis.e2e-spec.ts', 
     './e2e/Flows/Sanity/**/responses.e2e-spec.ts', 
     './e2e/Flows/Sanity/**/login_page.e2e-spec.ts' 
    ], 
    V3_e2e: [ 
     './e2e/Flows/E2E/**/flow1.e2e-spec.ts', 
     './e2e/Flows/E2E/**/flow2.e2e-spec.ts', 
     './e2e/Flows/E2E/**/flow3.e2e-spec.ts', 
     './e2e/Flows/E2E/**/flow4.e2e-spec.ts', 
     './e2e/Flows/E2E/**/flow5.e2e-spec.ts', 
     './e2e/Flows/E2E/**/flow6.e2e-spec.ts' 
    ], 
    QB_Sanity: [ 
     './e2e/Flows/QB Sanity/**/question_config.e2e-spec.ts', 
     './e2e/Flows/QB Sanity/**/right_panel.e2e-spec.ts', 
     './e2e/Flows/QB Sanity/**/question_types.e2e-spec.ts' 
    ], 
    CT_Sanity: [ 
     './e2e/Flows/Contingency Table Sanity/**/CT_load_test.e2e-spec.ts' 
    ], 
    Response_Filter: [ 
     './e2e/Flows/ResponsesFilter/responses_filter.e2e-spec.ts' 
    ], 
    DropOff: [ 
     './e2e/Flows/Response DropOff/response_drop_off.e2e-spec.ts' 
    ], 
    Trend_Notification: [ 
     './e2e/Flows/Trend Based Notification/trend_sanity.e2e-spec.ts' 
    ], 
    Response_Filter: [ 
     './e2e/Flows/ResponsesFilter/responses_filter_analytics.e2e-spec.ts', 
     './e2e/Flows/ResponsesFilter/responses_filter_responses.e2e-spec.ts' 
    ] 
    }, 
    capabilities: { 
    browserName: 'chrome', 
    chromeOptions: { 
     args: ["--headless", "--disable-gpu", "--window-size=1440x900", "--no-sandbox"] 
    } 
    }, 
    directConnect: true, 
    framework: 'jasmine', 
    jasmineNodeOpts: { 
    showColors: true, 
    defaultTimeoutInterval: 60000, 
    print: function() { } 
    }, 
    useAllAngular2AppRoots: true, 

    beforeLaunch: function() { 
    require('ts-node').register({ 
     project: 'e2e' 
    }); 
    }, 

    onPrepare: function() { 
    browser.manage().window().maximize(); 
    require('ts-node').register({ project: 'e2e' }); 
    var fs = require('fs-extra'); 

    fs.emptyDir('./e2e/target/screenshots/', function (err) { 
     console.log(err); 
    }); 

    jasmine.getEnv().addReporter({ 
     specDone: function (result) { 
     if (result.status == 'failed') { 
      browser.getCapabilities().then(function (caps) { 
      var browserName = caps.get('browserName'); 

      browser.takeScreenshot().then(function (png) { 
       console.log("taken") 
       var stream = fs.createWriteStream('e2e/target/screenshots/' + browserName + '-' + result.fullName + '.png'); 
       stream.write(new Buffer(png, 'base64')); 
       stream.end(); 
      }, (err) => { 
       console.log("screenshot error : " + err) 
      }); 
      }); 
     } 
     } 
    }); 

    // jasmine.getEnv().addReporter(reporter); 
    jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({ 
     consolidateAll: true, 
     savePath: './e2e/target/screenshots', 
     filePrefix: 'xmlresults' 
    })); 
    }, 

    afterLaunch: function (exitCode) { 
    }, 

    //HTMLReport called once tests are finished 
    onComplete: function() { 

    //save browser logs 
    browser.manage().logs() 
     .get('browser').then(function (browserLog) { 
     console.log('log :' + 
      require('util').inspect(browserLog)); 
     }); 

    var browserName, browserVersion; 
    var capsPromise = browser.getCapabilities(); 

    capsPromise.then(function (caps) { 
     browserName = caps.get('browserName'); 
     browserVersion = caps.get('version'); 

     var HTMLReport = require('protractor-html-reporter'); 

     testConfig = { 
     reportTitle: 'Test Execution Report', 
     outputPath: 'e2e/target/screenshots', 
     screenshotPath: '.', 
     testBrowser: browserName, 
     browserVersion: browserVersion, 
     modifiedSuiteName: false, 
     screenshotsOnlyOnFailure: true 
     }; 
     new HTMLReport().from('e2e/target/screenshots/xmlresults.xml', testConfig); 
    }); 
    } 
}; 

ランダムに私が意味することに失敗し始め、時には全体のテストが正常に実行されテストの初めに、またはいくつかのテストスイートを実行した後にエラーメッセージ "screenshot error:WebDriverError:chrome not reachable"が表示されて失敗することがあります。

私のクラウドubuntu 16.04サーバーでこの問題に直面しています。最近まで正しく動作していたが、突然それが失敗し始めた。

もう一つ注目すべき点は、テストスーツの数が少なくても正常に動作することです。これらのテストはローカルのUbuntu 16.04マシンで正常に動作しており、ヘッドレスで実行している間にこの問題が発生したことはありません。

私もChromeを再インストールしようとしましたが、それは役に立ちませんでした。

メモリ使用量も確認しましたが、十分なメモリが利用可能なテストが実行されます。

私は他のスタックオーバーフローの問題について言及しましたが、それらはすべて分度器構成の問題に関連しています。それは私のためにうまくいくようです。

答えて

0

私はUbuntuの上で同じ問題があったと私は二つのことを行うに持っていたことが分かった:

1)をPATHとwebdriverをするのenv varibleであなたのChromeDriverへのパスを含める:

export webdriver.chrome.driver="/usr/bin/chromedriver" 
export PATH=$webdriver.chrome.driver:$PATH 

2) ChromeOptionsのChromeブラウザバイナリ(ドライバではなく実際のブラウザ)にパスを追加します。これはヘッドレスで走るときに必要です。私のUbuntuで

capabilities: { 
    'browserName': 'chrome', 
    "chromeOptions": { 
    binary: '/path/to/chrome/binary', 
    args: ["--headless", "--disable-gpu", "--window-size=1440x900", "--no-sandbox"] 
    } 
} 

、バイナリのパスは、(の.debパッケージを介して、それをintalling後)の/ usr/binに/グーグル・クロームある

これがあなたを助けている場合を参照してください。

+0

私はこれを試しました。いつかは正常に動作します。しかし、私は再び同じ問題を抱えています。 –

+1

nodejsとnpmを更新した後、正常に動作しています。 –

+0

それは素晴らしいです。聞いてうれしい。 – dma

関連する問題