Возможно ли использовать --disable-web-security на Travis Chrome? - PullRequest
0 голосов
/ 25 сентября 2018

Я разрабатываю проект, который требует --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");

Это работает правильно на localhost с Chrome v69.0.3497.100 win7 x64.

Япытаясь запустить тот же код на Travis (путем внесения изменений в GitHub) с помощью следующего yml:

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,но я не уверен.В любом случае, я получил сообщение об ошибке, пытаясь построить на Travis:

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

Это ясно указывает на то, что веб-безопасность включена.Есть ли способ отключить веб-безопасность на Travis?

Решение:

Использование Trusty с настоящим Chrome решило эту проблему:

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 голосов
/ 26 сентября 2018

В соответствии с этой документацией вы можете запустить Chrome без поддержки, написав следующее в вашем .travis.yml файле конфигурации

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страница .Это означает, что вам необходимо добавить еще один флаг.

По соображениям безопасности 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']
      }
    }
  })
}

Имейте в виду, что у меня есть Никогда сделал это раньше.Я просто указываю вам на правильную документацию.

...