gpt4 book ai didi

angular - 如何在 vagrant ubuntu-16.04 中使用 Protractor 运行 headless angular2 e2e 测试?

转载 作者:行者123 更新时间:2023-12-04 18:36:41 24 4
gpt4 key购买 nike

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

我发现了一些接近使用 xvfb 的指令集,但是缺少 Angular 的前期文档让我觉得我错过了一些明显的东西。

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

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

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

最佳答案

基于 XVFB 的解决方案:

独立 Selenium 服务器

下面是一个使用主要来自 www.tothenew.com 的独立 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

创建脚本:/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 } }));
}
};

运行:
  • 运行/etc/init.d/selenium
  • 运行 ng e2e

  • Protractor 启动 Selenium 服务器

    根据下面 Sudharsan 的建议,这是另一个可行的解决方案。在这种情况下 Protractor 启动 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

    Protractor 配置:
    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

    headless Chrome 解决方案:

    Chrome 现在有一个 headless 选项。不再需要 xvfb。可以省略 xvfb 安装。

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

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

    然后测试就可以正常运行了:
    ng test
    ng e2e

    关于angular - 如何在 vagrant ubuntu-16.04 中使用 Protractor 运行 headless angular2 e2e 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43354714/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com