угловой тестовый файл ng e2e с загрузкой файлов, не работающий без хрома - PullRequest
0 голосов
/ 14 ноября 2018

В проекте angular2 + у меня есть тестовый сценарий e2e, который нажимает кнопку, загружается файл и проверяется содержимое.Он работает в обычном режиме, но не в режиме без головы.Файл не загружается, и тестовый тайм-аут истекает.

В моем protractor.conf.js я уже перепробовал много флагов, найденных в разных местах:

const os = require('os');
[...]

  capabilities: {
    'browserName': 'chrome',
    chromeOptions: {
      args: ['--headless', '--disable-gpu', '--disable-popup-blocking', '--no-sandbox', '--window-size=1024,768', '--remote-debugging-port=9222', "--disable-dev-shm-usage"],
      prefs: {
        'download': {
          'prompt_for_download': false,
          'directory_upgrade': true,
          'default_directory': os.homedir() + '/Downloads'
        }, 
        safebrowsing: {enabled: false, disable_download_protection: true},
        browser: {set_download_behavior: { behavior: 'allow' }}
      }
    }
  },

Без успеха.

Также я где-то читал, что вы можете настроить его следующим образом

// works for headless and "normal" mode
browser.driver.sendChromiumCommand('Page.setDownloadBehavior', {
    'behavior': 'allow',
    'downloadPath': DOWNLOAD_DIR
});

Но нет никакой переменной sendChromiumCommand ни в переменной браузера, ни в protractor.conf.js, ни вфайл спецификации.

Как мне заставить это работать?Заранее спасибо.

1 Ответ

0 голосов
/ 28 апреля 2019

Только что нашел решение для этого.

Добавьте эти строки в ваш protractor.conf.js:

exports.config = {
  ...
  onPrepare() {
    ...
    browser.driver.sendChromiumCommand('Page.setDownloadBehavior', {
      behavior: 'allow',
      downloadPath: downloadsPath
    });
  }
};

От: https://bugs.chromium.org/p/chromium/issues/detail?id=696481#c196

...