2017-08-03 18 views
0

私はBitbucketパイプラインを初めて使っているので、私のAngular 2アプリケーションの角度計2のテストを走らせようと少し苦労しています。すべての依存関係がインストールされていると分度器がruuning開始したときに私にbitbucket-pipelines.ymlこのBitbucketパイプラインで角度2の角度計を動かす

image: adrianmarinica/bitbucket-pipelines-protractor 

pipelines: 
    default: 
    - step: 
     caches: 
      - node 
     script: # Modify the commands below to build your repository. 
      - npm install 
      - protractor protractor.conf.js 

のように見える、私は私が成功しそうであるように

enter image description here

がどのように私は私のテストを実行することができ、このエラーが出ます私のローカルマシン?

答えて

1

bitbucketパイプラインでe2eテストを行うために、bitbucket-pipelines.yml、package.json、およびprotractor.conf.jsにいくつかの変更を加えました。

まず、bitbucket-pipelines.ymlのようになります。デフォルトのノードイメージの代わりにadrianmarinicaによって提供されるドッカーイメージを使用しました。

# You can specify a custom docker image from Docker Hub as your build environment. 
image: adrianmarinica/bitbucket-pipelines-protractor 

pipelines: 
    branches: 
     master: 
      - step: 
       caches: 
        - node 
       script: 
        - npm install 
        - npm start 
        - protractor protractor.conf.js 

はその後、package.jsonは、ここで重要な変更がstartコマンドで "&" であるこの

"scripts": { 
    ... 
    "start": "ng serve &" 
    ... 
    } 

のように見えます。これはバックグラウンドでサーブを実行し、分度器のコマンドが起動できるようにします。あなたのテストはローカルで正常に実行する場合

最後に、protractor.conf.js

const { SpecReporter } = require('jasmine-spec-reporter'); 

exports.config = { 
    allScriptsTimeout: 1800000, 
    specs: [ 
    './e2e/**/*.e2e-spec.ts' 
    ], 
    getPageTimeout: 120000, 
    capabilities: { 
    'browserName': 'chrome', 
    'chromeOptions': { 
     'args': [ 
     '--no-sandbox', 
     '--disable-gpu' 
     ] 
    } 
    }, 
    useAllAngular2AppRoots: true, 
    directConnect: true, 
    baseUrl: 'http://localhost:4200/', 
    framework: 'jasmine', 
    jasmineNodeOpts: { 
    showColors: true, 
    defaultTimeoutInterval: 120000, 
    print: function() { } 
    }, 
    beforeLaunch: function() { 
    require('ts-node').register({ 
     project: 'e2e/tsconfig.e2e.json' 
    }); 
    }, 
    onPrepare() { 
    jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); 
    } 
}; 

にはいくつかの微調整は、彼らはまた、パイプラインで、この構成に従って、環境が同じである必要があります必要があります。

-1

初期設定では、角度変数がWebページに存在するのを待っています。それは10秒のデフォルト時間を待ってからタイムアウトします。アプリケーションが角度のアプリケーションではない場合、あなたはitセクションの前に、あなたのdescribeブロックで

browser.waitForAngularEnabled(false); 

を設定することで、それをオフにすることができます。

PS - 上記動作しない場合は、角度の約束を待ちませ分度器になるだろうitセクション、前に、あなたの非常に最初のdescribeブロックにbrowser.ignoreSynchronization = true;を試してみてください。

+0

実際に角度2のアプリケーションです。 – MarBVI

+0

角度2の角度に対してもこのshoulが働きます。 – demouser123

+0

しかし、E2E testaを実行するには、アプリケーションをポート4200で提供する必要がありますか?パイプラインではどうしたらいいですか?なぜなら、私がスクリプトにnpm startを入れると、それがそこにくっついて分度器のステートメントが決して解けないからです。 – MarBVI

0

これはちょうど私の例である:(非AngularJS APP)

インサイド出典:test_specs.js、conf.js、bitbucket.pipeline.yml

出典:(のBitbucketは)

をtest_spec.js
 describe("Facebook App test", function(){ 

     beforeEach(function(){ 
     browser.driver.ignoreSynchronization = true; 

     }); 

     it("should launch the browser", function(){ 

     browser.driver.get("https://www.facebook.com");  

     console.log("Launch the browser"); 

     } 

}); 

--------------------------- 

Source: conf.js 

exports.config = { 
directConnect: true, 

allScriptsTimeout: 20000, 
capabilities: { 
'browserName': 'chrome' 
}, 

// Framework to use. Jasmine is recommended. 
framework: 'jasmine', 

// Spec patterns are relative to the current working directory when 
// protractor is called. 
specs: ['test_spec.js'], 

// Options to be passed to Jasmine. 
jasmineNodeOpts: { 
//showColors: true, 
defaultTimeoutInterval: 30000 

} 
}; 

----------------------------- 

bitbucket.pipeline.yml (**Is this correct?**) 

pipelines: 
    branches: 
     master: 
      - step: 
       caches: 
        - node 
       script: 
        - npm install 
        - npm start 
        - protractor protractor.conf.js 
+0

なぜこれが正しい解決策であるかを説明する必要があります。 – Difster