2017-04-11 4 views
1

私はVagrantを使用してubuntu-16.04を実行しており、継続的な統合のためにgui-less環境でangular2エンドツーエンド(e2e)テストを実行する必要があります。角度のある文書を精査した後、私は共通の使用例でなければならないと思われるものについて何の言及も見つけられませんでした。どのようにヘッドレスangle2 e2eテストでは、迷惑メールubuntu-16.04で分度器を使ってテストしますか?

私は、xvfbを利用して近づいてくる2つの命令セットを見つけましたが、これについての前向きなドキュメントの欠如は、私が何か明白なものを見逃していると感じさせます。

http://www.tothenew.com/blog/protractor-with-jenkins-and-headless-chrome-xvfb-setup/

誰かが正しい方向に私を指すしてくださいことはできますか?

更新以下の質問には、2つの異なる解決策で回答しました。

答えて

1

XVFB:

スタンドアロンセレンサーバー

以下

は、スタンドアロンセレンサーバーを使用して作業のソリューションです主にwww.tothenew.comから取得します。

はインストール:

exports.config = { 
    allScriptsTimeout: 11000, 
    specs: [ 
     './e2e/**/*.e2e-spec.ts' 
    ], 
    capabilities: { 
     'browserName': 'chrome' 
    }, 
    seleniumAddress: 'http://localhost:4444/wd/hub', 
    directConnect: false, 
    baseUrl: 'http://localhost:4200/', 
    framework: 'jasmine', 
    jasmineNodeOpts: { 
     showColors: true, 
     defaultTimeoutInterval: 30000, 
     print: function() {} 
    }, 
    beforeLaunch: function() { 
     require('ts-node').register({ 
      project: 'e2e/tsconfig.e2e.json' 
     }); 
    }, 
    onPrepare() { 
     jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); 
    } 
}; 

実行するには:seleniumAddressを使用する

config.vm.provision "shell", inline: <<-SHELL 
    echo -n            > /etc/init.d/selenium 
    echo '#!/bin/sh'         >> /etc/init.d/selenium 
    echo 'Xvfb -ac :99 -screen 0 1280x1024x16 &'  >> /etc/init.d/selenium 
    echo '#disown $1'         >> /etc/init.d/selenium 
    echo 'export DISPLAY=:99'       >> /etc/init.d/selenium 
    echo 'webdriver-manager start /dev/null 2>&1'  >> /etc/init.d/selenium 

    sudo chmod +x /etc/init.d/selenium 

SHELL 

更新protactor.conf.js /etc/init.d/selenium:

#Provision Java JDK 
sudo apt-get install default-jdk -y 

#Provision Protractor 
sudo npm install protractor -g 

#Webdriver update 
sudo webdriver-manager update 

#Exposing chromedriver 
sudo ln /usr/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.29 /usr/bin/chromedriver 

sudo apt-get install libxpm4 libxrender1 libgtk2.0-0 libnss3 libgconf-2-4 -y 

#Provision Google Chrome 
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - 
sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list' 
sudo apt-get update 
sudo apt-get install google-chrome-stable -y 

sudo apt-get install xvfb gtk2-engines-pixbuf -y 
sudo apt-get install xfonts-cyrillic xfonts-100dpi xfonts-75dpi xfonts-base xfonts-scalable -y 
sudo apt-get install imagemagick x11-apps dbus-x11 -y 

は、スクリプトを作成します:

  1. 実行/etc/init.d/selenium
  2. は、実行のNG E2E

分度器は以下Sudharsanからの提案に基づき、Seleniumサーバー

を開始し、別のワーキングソリューションです。この場合、分度器はセレンのサーバーを起動します。

インストール:

#Provision Java JDK 
sudo apt-get install default-jdk -y 

#Provision Protractor 
sudo npm install protractor -g 

#Webdriver update 
sudo webdriver-manager update 

#Exposing chromedriver 
sudo ln /usr/lib/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.29 /usr/bin/chromedriver 

#Provision Google Chrome 
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - 
sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list' 
sudo apt-get update 
sudo apt-get install google-chrome-stable -y 

#Provision xvfb 
sudo apt-get install -y xvfb 
sudo apt-get install -y xfonts-100dpi xfonts-75dpi xfonts-cyrillic dbus-x11 

分度器の設定:

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

実行するには

クロームに対するユニットテストを実行
xvfb-run -a -e /dev/stdout -s "-screen 0 2920x2580x24" ng e2e 

はまた

作品
xvfb-run -a -e /dev/stdout -s "-screen 0 2920x2580x24" ng test --single-run 

ヘッドレスクロム溶液:

クロムは今ヘッドレスオプションが追加されました。 xvfbはもはや必要ありません。 xvfbのインストールは省略できます。

カルマ

browsers: ['ChromeCI'], 
customLaunchers: { 
    ChromeCI: { 
    base: 'Chrome', 
    flags: ['--no-sandbox', '--headless', '--disable-gpu', '--remote-debugging-port=9222'] 
    } 
}, 

分度器

capabilities: { 
    'browserName': 'chrome', 
    'chromeOptions': { 
    'args': ['no-sandbox', 'headless', 'disable-gpu'] 
    } 
}, 

テストは、正常に動作してすることができます。

ng test 
ng e2e 
+0

ここに来る他の人のための情報 - ヘッドレスクロムソリューションの場合、sendkeys doうまくいかない。 sendkeys&headless chrome.https://bugs.chromium.org/p/chromedriver/issues/detail?id = 1772 – wizgot

+0

@wizgot sendKeysの問題(* nixではxvfbが必要)はchromedriver 2.31で修正されていますが、ソースから自分自身を構築することができます。現在、一般公開に向けて準備中です。 – AlwaysLearning

1

非常に簡単です。次の手順に従ってください。

ステップ1:xvfbをインストールします。

は、XVFBとその依存関係をインストールするには、これだけ

sudo apt-get install -y xvfb 
sudo apt-get install -y xfonts-100dpi xfonts-75dpi xfonts-cyrillic dbus-x11 

をターミナルで以下のコマンドを入力します。今、あなたはコマンドの下に使用して、分度器のテストをトリガすることができ、溶液に基づく

xvfb-run -a -e /dev/stdout -s "-screen 0 2920x2580x24" protractor config.js 
+0

おかげSudharsan。だから、私はちょうどクロムを使用して、seleniumAddressを残してデフォルトの分度器の設定を使用する?参照用に分度器の設定を含めることはできますか? –

+0

'seleniumAddress'キーを設定ファイルから削除するだけです。分度器は、XVFBバッファ表示でセレン・サーバーを単独で起動します。 –

+0

あなたのアプローチを使用して、私はこれらの問題に遭遇しました。 1)分度器がwebdriver-managerのアップデートを実行する必要があることを示し、2)javaが見つからなかった、3)セレニウムがChromeバイナリを見つけられなかった。インストールが完了したら(上記インストールリストを参照)、このエラーが表示されます。http:// localhost:4200 /:angularexceededを探して再試行します。 –

関連する問題