Тесты Karma Chrome провалились в Chrome, но прошли в PhantomJS

Я пытаюсь запустить тесты в браузере Chrome, используя Karma. Я запускал их в PhantomJS без каких-либо проблем, но надеялся перейти на ChromeHeadless. Я обнаружил, что тесты не проходят в Chrome или ChromeHeadless, но все же проходят с использованием PhantomJS.

Я считаю, что это как-то связано с файлами, включаемыми в конфиг. Я думаю, что PhantomJS загружает их, как и ожидалось, но по какой-то причине Chrome нет. Я рассмотрел другие вопросы здесь, но решения не были особенно актуальны и, к сожалению, не работали.

Это ошибка, которую я получаю при попытке запустить мои тесты с использованием Chrome:

Uncaught TypeError: Cannot read property 'maps' of undefined

Который имеет в виду google.maps, происходит от window.google, который должен быть объявлен в файлах в karma.conf.js:

module.exports = function(config) {
  config.set({
    // autoWatch: true,
    browserConsoleLogOptions: {
      terminal: true,
      level: ''
    },
    // Prevent timeout issues when running the tests
    browserDisconnectTimeout: 10000,
    browserDisconnectTolerance: 3,
    browserNoActivityTimeout: 60000,
    browsers: ['Chrome'],
    captureTimeout: 2000,
    // debug: true,
    files: [
    'http://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js',
      'http://maps.googleapis.com/maps/api/js?client=client_id',
      { pattern: 'test-context.js', watched: false }
    ],
    frameworks: ['jasmine'],
    // logLevel: config.LOG_DEBUG,
    port: 9876,
    preprocessors: {
      'test-context.js': ['webpack'],
    },
    reporters: ['progress', 'spec'],
    singleRun: true,
    webpack: require('./webpack/config.test'),
    webpackServer: {
      noInfo: true
    },
  });
};

Кто-нибудь знает, что я могу делать неправильно, или почему запуск браузера Chrome для тестирования, похоже, не тянет внешние файлы?

Я мог бы потенциально высмеивать весь объект Google Maps, но это кажется чрезмерным и ненужным, так как он должен быть включен в указанные файлы.

Если у кого-то есть идеи, я был бы очень признателен за вашу помощь. Спасибо!

1 ответ

Решение

Я наконец-то понял. В результате возникла проблема с CORS, которая препятствовала загрузке внешних файлов. Добавление следующего кода в мой karma.conf файл решил проблему для меня:

crossOriginAttribute: false,
Другие вопросы по тегам