"Ошибка: TypeError: ProtractorImageComparison не является конструктором" в сравнении с изображением-транспортиром v2.0.1
Я пытаюсь написать несколько визуальных тестов и сталкиваюсь с упомянутой ошибкой в сравнении с изображением транспортира изображения версии 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 ответ
Я столкнулся с этой проблемой сегодня, и, по-видимому, начиная с версии 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
чтобы он искал модуль плагина локально.