是否可以在Travis Chrome上--disable-web-security?

时间:2018-09-25 17:21:56

标签: google-chrome github travis-ci chromium

我正在开发一个需要--disable-web-security进行测试的项目。我将Karma用于以下设置:

    browsers: [
        "ch"
    ],
    customLaunchers: {
        "ch": {
            "base": "Chrome",
            "flags": ["--disable-web-security"]
        }
    },

if (process.env.TRAVIS)
    options.customLaunchers.ch.flags.push("--no-sandbox");

这在使用Chrome v69.0.3497.100 win7 x64的localhost上正常运行。

我正在尝试使用以下yml在Travis上运行相同的代码(通过将更改推送到GitHub):

language: node_js
node_js:
  - "9"
before_install:
  - export CHROME_BIN=chromium-browser
  - export DISPLAY=:99.0
  - sh -e /etc/init.d/xvfb start
  - sleep 5

Chromium != Chrome起,我猜我们在这里谈论的是使用相同引擎的2种不同的浏览器,但我不确定。无论如何,我尝试在Travis上构建时收到一条错误消息:

Blocked a frame with origin "http://localhost:9876" from accessing a cross-origin frame.

这清楚地表明已启用网络安全性。有什么方法可以在Travis上禁用网络安全性吗?

解决方案:

在真实的Chrome中使用Trusty解决了该问题:

language: node_js
node_js:
  - "9"
dist: trusty
addons:
  chrome: stable
before_install:
  - export DISPLAY=:99.0
  - sh -e /etc/init.d/xvfb start
  - sleep 5

1 个答案:

答案 0 :(得分:1)

根据this documentation,您可以通过在.travis.yml配置文件中写入以下内容来无头运行Chrome

dist: trusty
addons:
  chrome: stable
before_install:
  - # start your web application and listen on `localhost`
  - google-chrome-stable --headless --disable-gpu --remote-debugging-port=9222 http://localhost &

关于您的Karma配置文件,请选中this page。它表明您必须再添加一个标志。

  

出于安全考虑,当Google Chrome在基于容器的环境中运行时,无法提供沙箱功能。

     

要在基于容器的环境中使用Chrome,请将--no-sandbox标志传递给chrome可执行文件。

module.exports = function(config) {
  config.set({
    browsers: ['Chrome', 'ChromeHeadless', 'ChromeHeadlessNoSandbox'],

    // you can define custom flags
    customLaunchers: {
      ChromeHeadlessNoSandbox: {
        base: 'ChromeHeadless',
        flags: ['--no-sandbox']
      }
    }
  })
}

请注意,我以前 从未 进行过此操作。我只是为您指出正确的文档。