繁体   English   中英

如何在流浪汉ubuntu-16.04中使用量角器运行无头angular2 e2e测试?

[英]How run headless angular2 e2e tests using protractor in vagrant ubuntu-16.04?

我正在使用Vagrant运行ubuntu-16.04,并且需要在无GUI的环境中运行angular2端到端(e2e)测试以进行持续集成。 在搜寻了有角度的文档之后,我什至没有发现任何提及似乎是一个常见的用例。

我已经找到了几个使用xvfb的指令集,但是由于缺少有关角度的前期文档,这使我感到自己缺少明显的东西。

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

有人可以指出正确的方向吗?

更新我用两种不同的可行解决方案回答了以下问题。

基于XVFB的解决方案:

独立硒服务器

以下是一个使用独立硒服务器的工作解决方案,该服务器主要来自www.tothenew.com。

安装:

#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

创建脚本:/etc/init.d/selenium

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以使用seleniumAddress:

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 } }));
    }
};

跑步:

  1. 运行/etc/init.d/selenium
  2. 运行ng e2e

量角器启动Selenium服务器

根据Sudharsan的建议,以下是另一个可行的解决方案。 在这种情况下,量角器将启动硒服务器。

安装:

#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

针对Chrome运行单元测试也可以

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

无头铬溶液:

Chrome现在有一个无头的选择。 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

这非常简单,只需执行以下步骤。

步骤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

您还可以将docker作为轻量级解决方案签出: https : //hub.docker.com/r/trion/ng-cli-e2e/更详细的手册: https : //hub.docker.com/r/trion/ng -cli /

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM