«Ошибка: TypeError: ProtractorImageComparison не является конструктором» в сравнении с изображением транспортира - PullRequest
0 голосов
/ 16 мая 2019

Я пытаюсь написать несколько визуальных тестов и сталкиваюсь с упомянутой ошибкой с помощью сравнения изображений-транспортировщиков версии 2.0.1.Несмотря на то, что есть обновление библиотеки, я решил придерживаться более старой версии, так как у меня также есть проблемы с самой новой.Моя настройка:

// protractor.conf.js:

const { SpecReporter } = require('jasmine-spec-reporter');
const { join } = require('path');
const { ProtractorImageComparison } = require('protractor-image-comparison');

exports.config = {
  allScriptsTimeout: 11000,
  specs: ['./src/**/*-spec.ts'],
  capabilities: {
    browserName: 'chrome',
    chromeOptions: {
      args: [
        // '--headless',
        '--disable-gpu', '--window-size=1600,950', '--no-sandbox'],
    },
  },
  SELENIUM_PROMISE_MANAGER: false,
  directConnect: true,
  framework: 'jasmine2',
  jasmineNodeOpts: {
    showColors: true,
    defaultTimeoutInterval: 30000,
    print: function() {
    },
  },
  onPrepare() {
    require('ts-node').register({
      project: join(__dirname, './tsconfig.e2e.json'),
    });

    jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));

    browser.protractorImageComparison = new ProtractorImageComparison({
      baselineFolder: join(__dirname, '/src/resources/baseline/'),
      screenshotPath: join(__dirname, '/src/tmp/'),
      formatImageName: '{tag}',
      autoSaveBaseline: false
    });
  },
};

1 Ответ

0 голосов
/ 27 мая 2019

Я сталкивался с этой проблемой сегодня, и, по-видимому, начиная с версии 3.0.1 этот пакет теперь работает как плагин, а не как класс, для которого требуется создать экземпляр.

Мне удалось его получитьработая над добавлением следующего кода в мой conf.js:

plugins: [
    {
        inline: require('protractor-image-comparison'),
        // package: 'protractor-image-comparison' //protractor is installed globally so it is checking for plugin globally also
        options: {
            baselineFolder: './testArtifacts/screen-compare/baselines/',
            screenshotPath: './testArtifacts/screen-compare/screenshots/',
            formatImageName: `{tag}-{logName}-{width}x{height}`,
            savePerInstance: true,
        },
    },
],

Примечание: Для меня транспортир был установлен во всем мире, поэтому мне нужно было это решение, используя inline вместо package, чтобы получитьон ищет модуль плагина локально.

...