@appium/images-plugin 1.2.0 → 1.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -18,66 +18,42 @@ var __importStar = (this && this.__importStar) || function (mod) {
18
18
  __setModuleDefault(result, mod);
19
19
  return result;
20
20
  };
21
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
22
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23
- return new (P || (P = Promise))(function (resolve, reject) {
24
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
25
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
26
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
27
- step((generator = generator.apply(thisArg, _arguments || [])).next());
28
- });
29
- };
30
21
  var __importDefault = (this && this.__importDefault) || function (mod) {
31
22
  return (mod && mod.__esModule) ? mod : { "default": mod };
32
23
  };
33
24
  Object.defineProperty(exports, "__esModule", { value: true });
34
- let hasOpenCV = false;
35
- try {
36
- require('opencv4nodejs');
37
- hasOpenCV = true;
38
- }
39
- catch (ign) { }
40
25
  const chai_1 = __importDefault(require("chai"));
41
26
  const chai_as_promised_1 = __importDefault(require("chai-as-promised"));
42
27
  const index_1 = __importStar(require("../../index"));
43
28
  const compare_1 = require("../../lib/compare");
44
- const appium_base_driver_1 = __importDefault(require("appium-base-driver"));
29
+ const base_driver_1 = __importDefault(require("@appium/base-driver"));
45
30
  const finder_1 = require("../../lib/finder");
46
31
  const fixtures_1 = require("../fixtures");
47
32
  chai_1.default.use(chai_as_promised_1.default);
48
33
  chai_1.default.should();
49
- const describeOrSkip = hasOpenCV ? describe : describe.skip;
50
- describeOrSkip('ImageElementPlugin#handle', function () {
34
+ describe('ImageElementPlugin#handle', function () {
51
35
  const next = () => { };
52
- const driver = new appium_base_driver_1.default();
36
+ const driver = new base_driver_1.default();
53
37
  const p = new index_1.default();
54
38
  describe('compareImages', function () {
55
39
  this.timeout(6000);
56
- it('should compare images via match features mode', function () {
57
- return __awaiter(this, void 0, void 0, function* () {
58
- const res = yield p.compareImages(next, driver, compare_1.MATCH_FEATURES_MODE, fixtures_1.TEST_IMG_1_B64, fixtures_1.TEST_IMG_2_B64, {});
59
- res.count.should.eql(0);
60
- });
40
+ it('should compare images via match features mode', async function () {
41
+ const res = await p.compareImages(next, driver, compare_1.MATCH_FEATURES_MODE, fixtures_1.TEST_IMG_1_B64, fixtures_1.TEST_IMG_2_B64, {});
42
+ res.count.should.eql(0);
61
43
  });
62
- it('should compare images via get similarity mode', function () {
63
- return __awaiter(this, void 0, void 0, function* () {
64
- const res = yield p.compareImages(next, driver, compare_1.GET_SIMILARITY_MODE, fixtures_1.TEST_IMG_1_B64, fixtures_1.TEST_IMG_2_B64, {});
65
- res.score.should.be.above(0.2);
66
- });
44
+ it('should compare images via get similarity mode', async function () {
45
+ const res = await p.compareImages(next, driver, compare_1.GET_SIMILARITY_MODE, fixtures_1.TEST_IMG_1_B64, fixtures_1.TEST_IMG_2_B64, {});
46
+ res.score.should.be.above(0.2);
67
47
  });
68
- it('should compare images via match template mode', function () {
69
- return __awaiter(this, void 0, void 0, function* () {
70
- const res = yield p.compareImages(next, driver, compare_1.MATCH_TEMPLATE_MODE, fixtures_1.TEST_IMG_1_B64, fixtures_1.TEST_IMG_2_B64, {});
71
- res.rect.height.should.be.above(0);
72
- res.rect.width.should.be.above(0);
73
- res.score.should.be.above(0.2);
74
- });
48
+ it('should compare images via match template mode', async function () {
49
+ const res = await p.compareImages(next, driver, compare_1.MATCH_TEMPLATE_MODE, fixtures_1.TEST_IMG_1_B64, fixtures_1.TEST_IMG_2_B64, {});
50
+ res.rect.height.should.be.above(0);
51
+ res.rect.width.should.be.above(0);
52
+ res.score.should.be.above(0.2);
75
53
  });
76
- it('should throw an error if comparison mode is not supported', function () {
77
- return __awaiter(this, void 0, void 0, function* () {
78
- yield p.compareImages(next, driver, 'some mode', '', '')
79
- .should.eventually.be.rejectedWith(/comparison mode is unknown/);
80
- });
54
+ it('should throw an error if comparison mode is not supported', async function () {
55
+ await p.compareImages(next, driver, 'some mode', '', '')
56
+ .should.eventually.be.rejectedWith(/comparison mode is unknown/);
81
57
  });
82
58
  });
83
59
  describe('findElement(s)', function () {
@@ -85,115 +61,89 @@ describeOrSkip('ImageElementPlugin#handle', function () {
85
61
  driver.isW3CProtocol = () => true;
86
62
  driver.getScreenshot = () => fixtures_1.TEST_IMG_2_B64;
87
63
  driver.getWindowSize = () => ({ width: 64, height: 64 });
88
- it('should defer execution to regular command if not a find command', function () {
89
- return __awaiter(this, void 0, void 0, function* () {
90
- const next = () => true;
91
- yield p.handle(next, driver, 'sendKeys').should.eventually.become(true);
92
- });
64
+ it('should defer execution to regular command if not a find command', async function () {
65
+ const next = () => true;
66
+ await p.handle(next, driver, 'sendKeys').should.eventually.become(true);
93
67
  });
94
- it('should defer execution to regular command if it is a find command but a different strategy', function () {
95
- return __awaiter(this, void 0, void 0, function* () {
96
- const next = () => true;
97
- yield p.findElement(next, driver, 'xpath', '//foo/bar').should.eventually.become(true);
98
- yield p.findElements(next, driver, 'xpath', '//foo/bar').should.eventually.become(true);
99
- });
68
+ it('should defer execution to regular command if it is a find command but a different strategy', async function () {
69
+ const next = () => true;
70
+ await p.findElement(next, driver, 'xpath', '//foo/bar').should.eventually.become(true);
71
+ await p.findElements(next, driver, 'xpath', '//foo/bar').should.eventually.become(true);
100
72
  });
101
- it('should find an image element inside a screenshot', function () {
102
- return __awaiter(this, void 0, void 0, function* () {
103
- const el = yield p.findElement(next, driver, index_1.IMAGE_STRATEGY, fixtures_1.TEST_IMG_2_PART_B64);
104
- el[finder_1.W3C_ELEMENT_KEY].should.include('appium-image-element');
105
- });
73
+ it('should find an image element inside a screenshot', async function () {
74
+ const el = await p.findElement(next, driver, index_1.IMAGE_STRATEGY, fixtures_1.TEST_IMG_2_PART_B64);
75
+ el[finder_1.W3C_ELEMENT_KEY].should.include('appium-image-element');
106
76
  });
107
- it('should find image elements inside a screenshot', function () {
108
- return __awaiter(this, void 0, void 0, function* () {
109
- const els = yield p.findElements(next, driver, index_1.IMAGE_STRATEGY, fixtures_1.TEST_IMG_2_PART_B64);
110
- els.should.have.length(1);
111
- els[0][finder_1.W3C_ELEMENT_KEY].should.include('appium-image-element');
112
- });
77
+ it('should find image elements inside a screenshot', async function () {
78
+ const els = await p.findElements(next, driver, index_1.IMAGE_STRATEGY, fixtures_1.TEST_IMG_2_PART_B64);
79
+ els.should.have.length(1);
80
+ els[0][finder_1.W3C_ELEMENT_KEY].should.include('appium-image-element');
113
81
  });
114
82
  });
115
83
  describe('Element interactions', function () {
116
84
  let elId;
117
- before(function () {
118
- return __awaiter(this, void 0, void 0, function* () {
119
- driver.settings = { getSettings: () => ({}) };
120
- driver.isW3CProtocol = () => true;
121
- driver.getScreenshot = () => fixtures_1.TEST_IMG_2_B64;
122
- driver.getWindowSize = () => ({ width: 64, height: 64 });
123
- const el = yield p.findElement(next, driver, index_1.IMAGE_STRATEGY, fixtures_1.TEST_IMG_2_PART_B64);
124
- elId = el[finder_1.W3C_ELEMENT_KEY];
125
- });
126
- });
127
- it('should click on the screen coords of the middle of the element', function () {
128
- return __awaiter(this, void 0, void 0, function* () {
129
- let action = null;
130
- driver.performActions = (a) => { action = a; };
131
- yield p.handle(next, driver, 'click', elId);
132
- action.should.eql([{
133
- type: 'pointer',
134
- id: 'mouse',
135
- parameters: { pointerType: 'touch' },
136
- actions: [
137
- { type: 'pointerMove', x: 24, y: 40, duration: 0 },
138
- { type: 'pointerDown', button: 0 },
139
- { type: 'pause', duration: 125 },
140
- { type: 'pointerUp', button: 0 },
141
- ]
142
- }]);
143
- });
144
- });
145
- it('should always say the element is displayed', function () {
146
- return __awaiter(this, void 0, void 0, function* () {
147
- yield p.handle(next, driver, 'elementDisplayed', elId).should.eventually.be.true;
148
- });
149
- });
150
- it('should return the matched region size', function () {
151
- return __awaiter(this, void 0, void 0, function* () {
152
- yield p.handle(next, driver, 'getSize', elId).should.eventually.eql({
153
- width: 48,
154
- height: 48,
155
- });
156
- });
157
- });
158
- it('should return the matched region location', function () {
159
- return __awaiter(this, void 0, void 0, function* () {
160
- yield p.handle(next, driver, 'getLocation', elId).should.eventually.eql({
161
- x: 0,
162
- y: 16,
163
- });
164
- });
165
- });
166
- it('should return the region rect', function () {
167
- return __awaiter(this, void 0, void 0, function* () {
168
- yield p.handle(next, driver, 'getElementRect', elId).should.eventually.eql({
169
- x: 0,
170
- y: 16,
171
- height: 48,
172
- width: 48,
173
- });
174
- });
175
- });
176
- it('should return the match score as the score attr', function () {
177
- return __awaiter(this, void 0, void 0, function* () {
178
- yield p.handle(next, driver, 'getAttribute', 'score', elId).should.eventually.be.above(0.7);
179
- });
180
- });
181
- it('should return the match visualization as the visual attr', function () {
182
- return __awaiter(this, void 0, void 0, function* () {
183
- driver.settings = { getSettings: () => ({
184
- getMatchedImageResult: true,
185
- }) };
186
- const el = yield p.findElement(next, driver, index_1.IMAGE_STRATEGY, fixtures_1.TEST_IMG_2_PART_B64);
187
- elId = el[finder_1.W3C_ELEMENT_KEY];
188
- yield p.handle(next, driver, 'getAttribute', 'visual', elId).should.eventually.include('iVBOR');
189
- });
190
- });
191
- it('should not allow any other attrs', function () {
192
- return __awaiter(this, void 0, void 0, function* () {
193
- yield p.handle(next, driver, 'getAttribute', 'rando', elId).should.eventually.be
194
- .rejectedWith(/not yet/i);
195
- });
85
+ before(async function () {
86
+ driver.settings = { getSettings: () => ({}) };
87
+ driver.isW3CProtocol = () => true;
88
+ driver.getScreenshot = () => fixtures_1.TEST_IMG_2_B64;
89
+ driver.getWindowSize = () => ({ width: 64, height: 64 });
90
+ const el = await p.findElement(next, driver, index_1.IMAGE_STRATEGY, fixtures_1.TEST_IMG_2_PART_B64);
91
+ elId = el[finder_1.W3C_ELEMENT_KEY];
92
+ });
93
+ it('should click on the screen coords of the middle of the element', async function () {
94
+ let action = null;
95
+ driver.performActions = (a) => { action = a; };
96
+ await p.handle(next, driver, 'click', elId);
97
+ action.should.eql([{
98
+ type: 'pointer',
99
+ id: 'mouse',
100
+ parameters: { pointerType: 'touch' },
101
+ actions: [
102
+ { type: 'pointerMove', x: 24, y: 40, duration: 0 },
103
+ { type: 'pointerDown', button: 0 },
104
+ { type: 'pause', duration: 125 },
105
+ { type: 'pointerUp', button: 0 },
106
+ ]
107
+ }]);
108
+ });
109
+ it('should always say the element is displayed', async function () {
110
+ await p.handle(next, driver, 'elementDisplayed', elId).should.eventually.be.true;
111
+ });
112
+ it('should return the matched region size', async function () {
113
+ await p.handle(next, driver, 'getSize', elId).should.eventually.eql({
114
+ width: 48,
115
+ height: 48,
116
+ });
117
+ });
118
+ it('should return the matched region location', async function () {
119
+ await p.handle(next, driver, 'getLocation', elId).should.eventually.eql({
120
+ x: 0,
121
+ y: 16,
122
+ });
123
+ });
124
+ it('should return the region rect', async function () {
125
+ await p.handle(next, driver, 'getElementRect', elId).should.eventually.eql({
126
+ x: 0,
127
+ y: 16,
128
+ height: 48,
129
+ width: 48,
130
+ });
131
+ });
132
+ it('should return the match score as the score attr', async function () {
133
+ await p.handle(next, driver, 'getAttribute', 'score', elId).should.eventually.be.above(0.7);
134
+ });
135
+ it('should return the match visualization as the visual attr', async function () {
136
+ driver.settings = { getSettings: () => ({
137
+ getMatchedImageResult: true,
138
+ }) };
139
+ const el = await p.findElement(next, driver, index_1.IMAGE_STRATEGY, fixtures_1.TEST_IMG_2_PART_B64);
140
+ elId = el[finder_1.W3C_ELEMENT_KEY];
141
+ await p.handle(next, driver, 'getAttribute', 'visual', elId).should.eventually.include('iVBOR');
142
+ });
143
+ it('should not allow any other attrs', async function () {
144
+ await p.handle(next, driver, 'getAttribute', 'rando', elId).should.eventually.be
145
+ .rejectedWith(/not yet/i);
196
146
  });
197
147
  });
198
148
  });
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLXNwZWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L3BsdWdpbi1zcGVjcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7QUFDdEIsSUFBSTtJQUNGLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN6QixTQUFTLEdBQUcsSUFBSSxDQUFDO0NBQ2xCO0FBQUMsT0FBTyxHQUFHLEVBQUUsR0FBRTtBQUVoQixnREFBd0I7QUFDeEIsd0VBQThDO0FBQzlDLHFEQUFpRTtBQUNqRSwrQ0FBa0c7QUFDbEcsNEVBQTRDO0FBQzVDLDZDQUFtRDtBQUNuRCwwQ0FBa0Y7QUFFbEYsY0FBSSxDQUFDLEdBQUcsQ0FBQywwQkFBYyxDQUFDLENBQUM7QUFDekIsY0FBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBRWQsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7QUFFNUQsY0FBYyxDQUFDLDJCQUEyQixFQUFFO0lBQzFDLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUN0QixNQUFNLE1BQU0sR0FBRyxJQUFJLDRCQUFVLEVBQUUsQ0FBQztJQUNoQyxNQUFNLENBQUMsR0FBRyxJQUFJLGVBQWtCLEVBQUUsQ0FBQztJQUNuQyxRQUFRLENBQUMsZUFBZSxFQUFFO1FBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkIsRUFBRSxDQUFDLCtDQUErQyxFQUFFOztnQkFDbEQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsNkJBQW1CLEVBQUUseUJBQWMsRUFBRSx5QkFBYyxFQUFFLEVBQUUsQ0FBQyxDQUFD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
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLXNwZWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L3BsdWdpbi1zcGVjcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnREFBd0I7QUFDeEIsd0VBQThDO0FBQzlDLHFEQUFpRTtBQUNqRSwrQ0FBa0c7QUFDbEcsc0VBQTZDO0FBQzdDLDZDQUFtRDtBQUNuRCwwQ0FBa0Y7QUFFbEYsY0FBSSxDQUFDLEdBQUcsQ0FBQywwQkFBYyxDQUFDLENBQUM7QUFDekIsY0FBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBRWQsUUFBUSxDQUFDLDJCQUEyQixFQUFFO0lBQ3BDLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUN0QixNQUFNLE1BQU0sR0FBRyxJQUFJLHFCQUFVLEVBQUUsQ0FBQztJQUNoQyxNQUFNLENBQUMsR0FBRyxJQUFJLGVBQWtCLEVBQUUsQ0FBQztJQUNuQyxRQUFRLENBQUMsZUFBZSxFQUFFO1FBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkIsRUFBRSxDQUFDLCtDQUErQyxFQUFFLEtBQUs7WUFDdkQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsNkJBQW1CLEVBQUUseUJBQWMsRUFBRSx5QkFBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3pHLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQywrQ0FBK0MsRUFBRSxLQUFLO1lBQ3ZELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLDZCQUFtQixFQUFFLHlCQUFjLEVBQUUseUJBQWMsRUFBRSxF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
@@ -0,0 +1 @@
1
+ {"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.full.d.ts","../node_modules/@appium/base-driver/index.d.ts","../../base/node_modules/@types/node/assert.d.ts","../../base/node_modules/@types/node/assert/strict.d.ts","../../base/node_modules/@types/node/globals.d.ts","../../base/node_modules/@types/node/async_hooks.d.ts","../../base/node_modules/@types/node/buffer.d.ts","../../base/node_modules/@types/node/child_process.d.ts","../../base/node_modules/@types/node/cluster.d.ts","../../base/node_modules/@types/node/console.d.ts","../../base/node_modules/@types/node/constants.d.ts","../../base/node_modules/@types/node/crypto.d.ts","../../base/node_modules/@types/node/dgram.d.ts","../../base/node_modules/@types/node/diagnostics_channel.d.ts","../../base/node_modules/@types/node/dns.d.ts","../../base/node_modules/@types/node/dns/promises.d.ts","../../base/node_modules/@types/node/domain.d.ts","../../base/node_modules/@types/node/events.d.ts","../../base/node_modules/@types/node/fs.d.ts","../../base/node_modules/@types/node/fs/promises.d.ts","../../base/node_modules/@types/node/http.d.ts","../../base/node_modules/@types/node/http2.d.ts","../../base/node_modules/@types/node/https.d.ts","../../base/node_modules/@types/node/inspector.d.ts","../../base/node_modules/@types/node/module.d.ts","../../base/node_modules/@types/node/net.d.ts","../../base/node_modules/@types/node/os.d.ts","../../base/node_modules/@types/node/path.d.ts","../../base/node_modules/@types/node/perf_hooks.d.ts","../../base/node_modules/@types/node/process.d.ts","../../base/node_modules/@types/node/punycode.d.ts","../../base/node_modules/@types/node/querystring.d.ts","../../base/node_modules/@types/node/readline.d.ts","../../base/node_modules/@types/node/repl.d.ts","../../base/node_modules/@types/node/stream.d.ts","../../base/node_modules/@types/node/stream/promises.d.ts","../../base/node_modules/@types/node/stream/consumers.d.ts","../../base/node_modules/@types/node/stream/web.d.ts","../../base/node_modules/@types/node/string_decoder.d.ts","../../base/node_modules/@types/node/timers.d.ts","../../base/node_modules/@types/node/timers/promises.d.ts","../../base/node_modules/@types/node/tls.d.ts","../../base/node_modules/@types/node/trace_events.d.ts","../../base/node_modules/@types/node/tty.d.ts","../../base/node_modules/@types/node/url.d.ts","../../base/node_modules/@types/node/util.d.ts","../../base/node_modules/@types/node/v8.d.ts","../../base/node_modules/@types/node/vm.d.ts","../../base/node_modules/@types/node/wasi.d.ts","../../base/node_modules/@types/node/worker_threads.d.ts","../../base/node_modules/@types/node/zlib.d.ts","../../base/node_modules/@types/node/globals.global.d.ts","../../base/node_modules/@types/node/index.d.ts","../../base/node_modules/@types/range-parser/index.d.ts","../../base/node_modules/@types/qs/index.d.ts","../../base/node_modules/@types/express-serve-static-core/index.d.ts","../../base/node_modules/@types/mime/index.d.ts","../../base/node_modules/@types/serve-static/index.d.ts","../../base/node_modules/@types/connect/index.d.ts","../../base/node_modules/@types/body-parser/index.d.ts","../../base/node_modules/@types/express/index.d.ts","../../base/node_modules/@appium/base-driver/index.d.ts","../../base/index.d.ts","../lib/compare.js","../lib/logger.js","../lib/image-element.js","../lib/finder.js","../lib/plugin.js","../index.js","../node_modules/p-cancelable/index.d.ts","../node_modules/@szmarczak/http-timer/dist/source/index.d.ts","../node_modules/cacheable-lookup/index.d.ts","../node_modules/@types/keyv/index.d.ts","../node_modules/@types/http-cache-semantics/index.d.ts","../node_modules/@types/responselike/index.d.ts","../node_modules/@types/cacheable-request/index.d.ts","../node_modules/got/dist/source/core/utils/timed-out.d.ts","../node_modules/got/dist/source/core/utils/options-to-url.d.ts","../node_modules/got/dist/source/core/utils/dns-ip-version.d.ts","../node_modules/got/dist/source/core/index.d.ts","../node_modules/got/dist/source/as-promise/types.d.ts","../node_modules/got/dist/source/as-promise/index.d.ts","../node_modules/got/dist/source/types.d.ts","../node_modules/got/dist/source/create.d.ts","../node_modules/got/dist/source/index.d.ts","../node_modules/webdriver/webdriver.d.ts","../node_modules/@types/puppeteer/index.d.ts","../node_modules/webdriverio/webdriverio-core.d.ts","../node_modules/webdriverio/webdriverio.d.ts","../test/fixtures/index.js","../test/e2e/plugin-e2e-specs.js","../test/unit/finder-specs.js","../test/unit/image-element-specs.js","../test/unit/plugin-specs.js","../../../node_modules/@types/mocha/index.d.ts","../node_modules/@types/node/index.d.ts"],"fileInfos":[{"version":"89f78430e422a0f06d13019d60d5a45b37ec2d28e67eb647f73b1b0d19a46b72","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",{"version":"abba1071bfd89e55e88a054b0c851ea3e8a494c340d0f3fab19eb18f6afb0c9e","affectsGlobalScope":true},{"version":"927cb2b60048e1395b183bf74b2b80a75bdb1dbe384e1d9fac654313ea2fb136","affectsGlobalScope":true},{"version":"7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481","affectsGlobalScope":true},{"version":"097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd","affectsGlobalScope":true},{"version":"d8996609230d17e90484a2dd58f22668f9a05a3bfe00bfb1d6271171e54a31fb","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"4378fc8122ec9d1a685b01eb66c46f62aba6b239ca7228bb6483bcf8259ee493","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"1b3fe904465430e030c93239a348f05e1be80640d91f2f004c3512c2c2c89f34","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"d071129cba6a5f2700be09c86c07ad2791ab67d4e5ed1eb301d6746c62745ea4","affectsGlobalScope":true},{"version":"10bbdc1981b8d9310ee75bfac28ee0477bb2353e8529da8cff7cb26c409cb5e8","affectsGlobalScope":true},"32b8443be144970b813b9dd72dcdba2059fbdfdae4d3a50c4d8a158ed6057bbe","ca2b0e915cf19c63c1398f6e1c43eba4300186469f12db857bb19d150d1d64de","0cba3a5d7b81356222594442753cf90dd2892e5ccfe1d262aaca6896ba6c1380","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"c2ab70bbc7a24c42a790890739dd8a0ba9d2e15038b40dff8163a97a5d148c00","affectsGlobalScope":true},"422dbb183fdced59425ca072c8bd09efaa77ce4e2ab928ec0d8a1ce062d2a45a",{"version":"2a801b0322994c3dd7f0ef30265d19b3dd3bae6d793596879166ed6219c3da68","affectsGlobalScope":true},"1dab5ab6bcf11de47ab9db295df8c4f1d92ffa750e8f095e88c71ce4c3299628","f71f46ccd5a90566f0a37b25b23bc4684381ab2180bdf6733f4e6624474e1894",{"version":"54e65985a3ee3cec182e6a555e20974ea936fc8b8d1738c14e8ed8a42bd921d4","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","bcc8caf03ee65fe8610d258752f255fbdddbb2e4de7b6c5628956a5a0d859ec8","34e5de87d983bc6aefef8b17658556e3157003e8d9555d3cb098c6bef0b5fbc8","cc0b61316c4f37393f1f9595e93b673f4184e9d07f4c127165a490ec4a928668","f27371653aded82b2b160f7a7033fb4a5b1534b6f6081ef7be1468f0f15327d3","c762cd6754b13a461c54b59d0ae0ab7aeef3c292c6cf889873f786ee4d8e75c9","f4ea7d5df644785bd9fbf419930cbaec118f0d8b4160037d2339b8e23c059e79",{"version":"c28e5baab1b53377c90d12970e207a2644bc3627840066449e37e2a59125d07e","affectsGlobalScope":true},"7a5459efa09ea82088234e6533a203d528c594b01787fb90fba148885a36e8b6","ae97e20f2e10dbeec193d6a2f9cd9a367a1e293e7d6b33b68bacea166afd7792","10d4796a130577d57003a77b95d8723530bbec84718e364aa2129fa8ffba0378","ad41bb744149e92adb06eb953da195115620a3f2ad48e7d3ae04d10762dae197","bf73c576885408d4a176f44a9035d798827cc5020d58284cb18d7573430d9022","7ae078ca42a670445ae0c6a97c029cb83d143d62abd1730efb33f68f0b2c0e82",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"5d0a9ea09d990b5788f867f1c79d4878f86f7384cb7dab38eecbf22f9efd063d","12eea70b5e11e924bb0543aea5eadc16ced318aa26001b453b0d561c2fd0bd1e","08777cd9318d294646b121838574e1dd7acbb22c21a03df84e1f2c87b1ad47f2","08a90bcdc717df3d50a2ce178d966a8c353fd23e5c392fd3594a6e39d9bb6304",{"version":"8207e7e6db9aa5fc7e61c8f17ba74cf9c115d26f51f91ee93f790815a7ea9dfb","affectsGlobalScope":true},"2a12d2da5ac4c4979401a3f6eaafa874747a37c365e4bc18aa2b171ae134d21b","002b837927b53f3714308ecd96f72ee8a053b8aeb28213d8ec6de23ed1608b66","1dc9c847473bb47279e398b22c740c83ea37a5c88bf66629666e3cf4c5b9f99c","a9e4a5a24bf2c44de4c98274975a1a705a0abbaad04df3557c2d3cd8b1727949","00fa7ce8bc8acc560dc341bbfdf37840a8c59e6a67c9bfa3fa5f36254df35db2","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"cfe724f7c694aab65a9bdd1acb05997848c504548c9d4c71645c187a091cfa2a","5f0ed51db151c2cdc4fa3bb0f44ce6066912ad001b607a34e65a96c52eb76248",{"version":"3345c276cab0e76dda86c0fb79104ff915a4580ba0f3e440870e183b1baec476","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","e383ff72aabf294913f8c346f5da1445ae6ad525836d28efd52cbadc01a361a6","f52fbf64c7e480271a9096763c4882d356b05cab05bf56a64e68a95313cd2ce2","59bdb65f28d7ce52ccfc906e9aaf422f8b8534b2d21c32a27d7819be5ad81df7","1835259a20b9fa6b1882931375b69ae5978195f2b139b4e0db51ec8319261649","b52cd693219a63dd21282ac99a7bf55f77cbe8a91f097968856419cc2e05f017","3aff9c8c36192e46a84afe7b926136d520487155154ab9ba982a8b544ea8fc95","a880cf8d85af2e4189c709b0fea613741649c0e40fffb4360ec70762563d5de0","85bbf436a15bbeda4db888be3062d47f99c66fd05d7c50f0f6473a9151b6a070","9f9c49c95ecd25e0cb2587751925976cf64fd184714cb11e213749c80cf0f927","f0c75c08a71f9212c93a719a25fb0320d53f2e50ca89a812640e08f8ad8c408c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"0b3eba6dca8c6e534d16ef7b7d76cb546cd3cbab616c8f71daa0a151b5412b9e","16d51f964ec125ad2024cf03f0af444b3bc3ec3614d9345cc54d09bab45c9a4c","ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc",{"version":"d2f7baf43dfa349d4010cbd9d64d84cdf3ec26c65fa5f44c8f74f052bedd0b49","affectsGlobalScope":true},"84e3bbd6f80983d468260fdbfeeb431cc81f7ea98d284d836e4d168e36875e86","0b85cb069d0e427ba946e5eb2d86ef65ffd19867042810516d16919f6c1a5aec","6d829824ead8999f87b6df21200df3c6150391b894b4e80662caa462bd48d073","afc559c1b93df37c25aef6b3dfa2d64325b0e112e887ee18bf7e6f4ec383fc90","15c88bfd1b8dc7231ff828ae8df5d955bae5ebca4cf2bcb417af5821e52299ae","ca2b0e915cf19c63c1398f6e1c43eba4300186469f12db857bb19d150d1d64de","951da31b03c64b86883e39585ae377374b2e69b5d6d63d16bb6efe262cbd46da","0a6955efb98d644028e4b7f5f404475221d154428f4d140d21f788a7aa49574b","9c2d0bced189ac908a8180b1d56a3c500a10eec41297f430e9cd17ed15b2d20d","1a016bc682ee0cf89f48be533af1f763f57fe97b909d9aad86491e4d922c5302","324f6cded0a1fa3931420bffaaed93a78d238f487f81a580ea730addab6b3d6c","2c8b4edc8e1e87a16a5955e48a8656bb4fcb8b04bff077afc619b5c9d3865cc3","89b69aeaec81df94a1186f554136cc102b862afabc880bb63386ff42b2e7e48a","6bc64e37d72e60ec298911f260518ad11a875b236c237a4b4319a2c8f76a6467","7ab735672492614a1af2098219bd191642e2bbd126e0631e13ed15e947238a51","c77e2a25b0b7e23ad5b5087e16db5aeec6741dcc8e99b8aae1a6b58659083b6d","82169f198ffdfc787fba368ccfad2b2d8ef3712f3c696df94ac13f6884bbbe2d","cab425b5559edac18327eb2c3c0f47e7e9f71b667290b7689faafd28aac69eae","3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562","e40f22ef14ca35f5019e16f852366d0880e42e955c03cc25da2abe689eef679c","8d12345aee8dedececa587bb31701273a3088ba4f83e866cdfa26a05b3f36a13","01856d31c900d93d280293d98ec9ca9be4991ab3acd3216bf985513eba3544b8","eca6a6c1e2da298c7127f52674f041e79be1755fbac98f5796887ed793818d74","2c0d8c9cdea4f41f395b91f722ea0a18451c173ead39df01e4d4e82b80d26cff","576ec53c444adac3b7725ced6240de54a04183791fe9d7cc880de11411114ff2","b5a00f5daf93a53f8772180dd1148ab620c7af46991bef3b25e0b70ff9ab59c6","b3e3394b5ffa583518ace1099d5df14cb887ec1578a023116fac4a35480d2b38","ac3459d91154275b1cd916f265d0151fc4a4a3b3701b1c58cb7c32ea48a7aaec",{"version":"77944f528157d00f7c057b3c7f8c3d8b8f89c5a8a60ffdd0cacdb3de83f698cd","affectsGlobalScope":true},"a2289e2e21b5402112c5eb34d60880bbf703c48af56671503da93f67f3e8582f",{"version":"1595391adf392188d193a77ece78ec3ccd585f8c8809102d958b8a3e70a1aac1","affectsGlobalScope":true},{"version":"38c9687a79df68803d9738b29d7f30ae5f9d1604a588d64b820e2daddec535db","affectsGlobalScope":true},"b6e898e2a185d4a1c0e4ce6fbf44acda7c2238fa9ce46459cd27ff7ea37e89ad","128e0e485471c15896b6d133c402ad325349ea7e66d481f4becf4a5784501b96","e9b1e6700d96b7f4d77b0deafd0384abd5c9144f3ee3949c5a62f4429c30f18e","880c0f914aac92d160bcbc72d44ed15da0d425f5ea1c94005fa9a361a35c4114","3f0a1b664803573e6ea93c2035dfc8951acc500c762c0b6dd4cafb115bd52ec6",{"version":"e8bf92aabac2b11e1bf60a0161039cd6f5f0cd9713863ca2289dd7b10eddece8","affectsGlobalScope":true}],"options":{"declaration":false,"esModuleInterop":true,"inlineSourceMap":true,"module":1,"outDir":"./","target":5},"fileIdsList":[[88],[44,63,88,103,119],[63,88,95,101,119],[63,88,95,119],[60,63,88,95,96,97,119],[88,97,98,100,102],[45,88],[48,88],[49,54,88],[50,60,61,68,77,87,88],[50,51,60,68,88],[52,88],[53,54,61,69,88],[54,77,84,88],[55,57,60,68,88],[56,88],[57,58,88],[59,60,88],[60,88],[60,61,62,77,87,88],[60,61,62,77,88],[63,68,77,87,88,119],[60,61,63,64,68,77,84,87,88],[63,65,77,84,87,88],[45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94],[60,66,88],[67,87,88],[57,60,68,77,88],[69,88],[70,88],[48,71,88],[72,86,88,92],[73,88],[74,88],[60,75,88],[75,76,88,90],[60,77,78,79,88],[77,79,88],[77,78,88],[80,88],[81,88],[60,82,83,88],[82,83,88],[54,68,77,84,88],[85,88],[68,86,88],[49,63,74,87,88],[54,88],[77,88,89],[88,90],[88,91],[49,54,60,62,71,77,87,88,90,92],[77,88,93],[63,88,95,99,119],[88,110],[44,88],[44,88,106,107,108],[44,88,107,109],[44,88,105,106,108,109],[63,88,119,138],[60,63,87,88,115,116,117,119,138],[60,88,138],[50,88,138],[63,77,88,119,138],[57,63,88,119],[88,123],[88,112,122,138],[63,65,68,77,84,87,88,113,114,117,118,119,120,121,123,138],[87,88],[63,88,119],[88,125],[88,124,125,126],[87,88,112,122,124,138],[63,65,88,119,127,138],[88,128,129,138],[88,130],[70,88,106,131,132],[61,70,88],[44,88,106,108,109,111,132],[44,88,108,109,110],[44,88,106,109,111,132]],"referencedMap":[[137,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[25,1],[22,1],[23,1],[24,1],[26,1],[27,1],[28,1],[5,1],[43,1],[29,1],[30,1],[31,1],[32,1],[6,1],[33,1],[34,1],[35,1],[36,1],[7,1],[41,1],[37,1],[38,1],[39,1],[40,1],[1,1],[42,1],[11,1],[10,1],[105,2],[104,1],[102,3],[101,4],[98,5],[103,6],[99,1],[45,7],[46,7],[48,8],[49,9],[50,10],[51,11],[52,12],[53,13],[54,14],[55,15],[56,16],[57,17],[58,17],[59,18],[60,19],[61,20],[62,21],[47,1],[94,1],[63,22],[64,23],[65,24],[95,25],[66,26],[67,27],[68,28],[69,29],[70,30],[71,31],[72,32],[73,33],[74,34],[75,35],[76,36],[77,37],[79,38],[78,39],[80,40],[81,41],[82,42],[83,43],[84,44],[85,45],[86,46],[87,47],[88,48],[89,49],[90,50],[91,51],[92,52],[93,53],[97,1],[96,1],[100,54],[111,55],[106,56],[109,57],[108,58],[107,1],[110,59],[44,1],[113,60],[118,61],[116,1],[115,62],[129,63],[117,64],[114,65],[124,66],[123,67],[122,68],[121,1],[120,69],[119,70],[126,71],[127,72],[125,73],[112,1],[128,74],[130,75],[131,76],[133,77],[132,78],[134,79],[135,80],[136,81]],"exportedModulesMap":[[137,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[25,1],[22,1],[23,1],[24,1],[26,1],[27,1],[28,1],[5,1],[43,1],[29,1],[30,1],[31,1],[32,1],[6,1],[33,1],[34,1],[35,1],[36,1],[7,1],[41,1],[37,1],[38,1],[39,1],[40,1],[1,1],[42,1],[11,1],[10,1],[105,2],[104,1],[102,3],[101,4],[98,5],[103,6],[99,1],[45,7],[46,7],[48,8],[49,9],[50,10],[51,11],[52,12],[53,13],[54,14],[55,15],[56,16],[57,17],[58,17],[59,18],[60,19],[61,20],[62,21],[47,1],[94,1],[63,22],[64,23],[65,24],[95,25],[66,26],[67,27],[68,28],[69,29],[70,30],[71,31],[72,32],[73,33],[74,34],[75,35],[76,36],[77,37],[79,38],[78,39],[80,40],[81,41],[82,42],[83,43],[84,44],[85,45],[86,46],[87,47],[88,48],[89,49],[90,50],[91,51],[92,52],[93,53],[97,1],[96,1],[100,54],[111,55],[106,56],[109,57],[108,58],[107,1],[110,59],[44,1],[113,60],[118,61],[116,1],[115,62],[129,63],[117,64],[114,65],[124,66],[123,67],[122,68],[121,1],[120,69],[119,70],[126,71],[127,72],[125,73],[112,1],[128,74],[130,75],[131,76],[133,77],[132,78],[134,79],[135,80],[136,81]],"semanticDiagnosticsPerFile":[137,8,9,13,12,2,14,15,16,17,18,19,20,21,3,4,25,22,23,24,26,27,28,5,43,29,30,31,32,6,33,34,35,36,7,41,37,38,39,40,1,42,11,10,105,104,102,101,98,103,99,45,46,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,47,94,63,64,65,95,66,67,68,69,70,71,72,73,74,75,76,77,79,78,80,81,82,83,84,85,86,87,88,89,90,91,92,93,97,96,100,111,106,109,108,107,110,44,113,118,116,115,129,117,114,124,123,122,121,120,119,126,127,125,112,128,130,131,133,132,134,135,136]},"version":"4.5.5"}
package/lib/compare.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import _ from 'lodash';
2
- import { errors } from 'appium-base-driver';
3
- import { imageUtil } from 'appium-support';
2
+ import { errors } from '@appium/base-driver';
3
+ import { getImagesMatches, getImagesSimilarity, getImageOccurrence } from '@appium/opencv';
4
4
 
5
5
  const MATCH_FEATURES_MODE = 'matchFeatures';
6
6
  const GET_SIMILARITY_MODE = 'getSimilarity';
@@ -20,11 +20,11 @@ const DEFAULT_MATCH_THRESHOLD = 0.4;
20
20
  * @param {string} secondImage - Base64-encoded image file.
21
21
  * All image formats, that OpenCV library itself accepts, are supported.
22
22
  * @param {?Object} options [{}] - The content of this dictionary depends
23
- * on the actual `mode` value. See the documentation on `appium-support`
23
+ * on the actual `mode` value. See the documentation on `@appium/support`
24
24
  * module for more details.
25
25
  * @returns {Object} The content of the resulting dictionary depends
26
26
  * on the actual `mode` and `options` values. See the documentation on
27
- * `appium-support` module for more details.
27
+ * `@appium/support` module for more details.
28
28
  * @throws {Error} If required OpenCV modules are not installed or
29
29
  * if `mode` value is incorrect or if there was an unexpected issue while
30
30
  * matching the images.
@@ -35,14 +35,19 @@ async function compareImages (mode, firstImage, secondImage, options = {}) {
35
35
  let result = null;
36
36
  switch (_.toLower(mode)) {
37
37
  case MATCH_FEATURES_MODE.toLowerCase():
38
- result = await imageUtil.getImagesMatches(img1, img2, options);
38
+ try {
39
+ result = await getImagesMatches(img1, img2, options);
40
+ } catch (err) {
41
+ // might throw if no matches
42
+ result = {count: 0};
43
+ }
39
44
  break;
40
45
  case GET_SIMILARITY_MODE.toLowerCase():
41
- result = await imageUtil.getImagesSimilarity(img1, img2, options);
46
+ result = await getImagesSimilarity(img1, img2, options);
42
47
  break;
43
48
  case MATCH_TEMPLATE_MODE.toLowerCase():
44
49
  // firstImage/img1 is the full image and secondImage/img2 is the partial one
45
- result = await imageUtil.getImageOccurrence(img1, img2, options);
50
+ result = await getImageOccurrence(img1, img2, options);
46
51
  if (options.multiple) {
47
52
  return result.multiple.map(convertVisualizationToBase64);
48
53
  }
package/lib/finder.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import _ from 'lodash';
2
2
  import LRU from 'lru-cache';
3
- import { imageUtil, util } from 'appium-support';
4
- import { errors } from 'appium-base-driver';
3
+ import { imageUtil, util } from '@appium/support';
4
+ import { errors } from '@appium/base-driver';
5
5
  import { ImageElement, DEFAULT_TEMPLATE_IMAGE_SCALE,
6
6
  IMAGE_EL_TAP_STRATEGY_W3C } from './image-element';
7
7
  import { MATCH_TEMPLATE_MODE, compareImages, DEFAULT_MATCH_THRESHOLD } from './compare';
@@ -1,7 +1,7 @@
1
1
  import _ from 'lodash';
2
- import { errors } from 'appium-base-driver';
2
+ import { errors } from '@appium/base-driver';
3
3
  import log from './logger';
4
- import { util } from 'appium-support';
4
+ import { util } from '@appium/support';
5
5
  import { DEFAULT_SETTINGS } from './finder';
6
6
 
7
7
  const IMAGE_ELEMENT_PREFIX = 'appium-image-element-';
package/lib/logger.js CHANGED
@@ -1,3 +1,3 @@
1
- import { logger } from 'appium-support';
1
+ import { logger } from '@appium/support';
2
2
  const log = logger.getLogger('ImageElementPlugin');
3
3
  export default log;
package/lib/plugin.js CHANGED
@@ -1,22 +1,12 @@
1
1
  /* eslint-disable no-case-declarations */
2
2
 
3
3
  import _ from 'lodash';
4
- import { errors } from 'appium-base-driver';
4
+ import { errors } from '@appium/base-driver';
5
5
  import BasePlugin from '@appium/base-plugin';
6
6
  import { compareImages } from './compare';
7
- import ImageElementFinder, { W3C_ELEMENT_KEY, MJSONWP_ELEMENT_KEY } from './finder';
7
+ import ImageElementFinder from './finder';
8
8
  import { ImageElement, IMAGE_ELEMENT_PREFIX } from './image-element';
9
9
 
10
- const IMG_EL_BODY_RE = new RegExp(
11
- `"(${W3C_ELEMENT_KEY}|${MJSONWP_ELEMENT_KEY})":\s*` + // eslint-disable-line no-useless-escape
12
- `"${IMAGE_ELEMENT_PREFIX}[^"]+"`
13
- );
14
-
15
- const IMG_EL_URL_RE = new RegExp(
16
- `/(element|screenshot)` +
17
- `/${IMAGE_ELEMENT_PREFIX}[^/]+`
18
- );
19
-
20
10
  const IMAGE_STRATEGY = '-image';
21
11
 
22
12
  function getImgElFromArgs (args) {
@@ -43,34 +33,11 @@ export default class ImageElementPlugin extends BasePlugin {
43
33
  required: ['mode', 'firstImage', 'secondImage'],
44
34
  optional: ['options']
45
35
  },
36
+ neverProxy: true,
46
37
  }
47
38
  },
48
39
  };
49
40
 
50
- shouldAvoidProxy (method, route, body) {
51
- // if it looks like we have an image element in the url (as a route
52
- // parameter), never proxy. Just look for our image element prefix in allowed
53
- // positions (either after an 'element' or 'screenshot' path segment), and
54
- // ensure the prefix is followed by something
55
- if (IMG_EL_URL_RE.test(route)) {
56
- return true;
57
- }
58
-
59
-
60
- // also if it looks like we have an image element in the request body (as
61
- // a JSON parameter), never proxy. Basically check against a regexp of the
62
- // json string of the body, where we know what the form of an image element
63
- // must be
64
- if (body) {
65
- const stringBody = JSON.stringify(body);
66
- if (stringBody && IMG_EL_BODY_RE.test(stringBody)) {
67
- return true;
68
- }
69
- }
70
-
71
- return false;
72
- }
73
-
74
41
  async compareImages (next, driver, ...args) {
75
42
  return await compareImages(...args);
76
43
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@appium/images-plugin",
3
- "version": "1.2.0",
3
+ "version": "1.2.4",
4
4
  "description": "Plugin for working with images and image elements in Appium",
5
5
  "main": "./build/index.js",
6
6
  "repository": {
@@ -31,15 +31,16 @@
31
31
  "index.js"
32
32
  ],
33
33
  "dependencies": {
34
- "@appium/base-plugin": "^1.7.0",
35
- "appium-base-driver": "^8.0.0-beta.0",
36
- "appium-support": "^2.53.0",
37
- "lru-cache": "^6.0.0"
34
+ "@appium/base-driver": "8.2.1",
35
+ "@appium/base-plugin": "^1.8.1",
36
+ "@appium/opencv": "1.0.1",
37
+ "@appium/support": "2.55.3",
38
+ "lru-cache": "6.0.0"
38
39
  },
39
40
  "scripts": {
40
- "test:unit": "mocha ./build/test/unit/*-specs.js",
41
- "test:e2e": "mocha -t 160000 ./build/test/e2e/*-specs.js",
42
- "copyfiles": "copyfiles ./test/fixtures/*.png ./build"
41
+ "test:unit": "mocha \"./build/test/unit/*-specs.js\"",
42
+ "test:e2e": "mocha -t 160s \"./build/test/e2e/*-specs.js\"",
43
+ "copyfiles": "copyfiles \"./test/fixtures/*.png\" ./build"
43
44
  },
44
- "gitHead": "bdbba55f06c918cf8bd259e58d057ef7cff3aa64"
45
+ "gitHead": "5efbd2840a4e5dd078a4646c026472a006ab2211"
45
46
  }
@@ -1,16 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const index_1 = __importDefault(require("../../index"));
7
- const chai_1 = __importDefault(require("chai"));
8
- const chai_as_promised_1 = __importDefault(require("chai-as-promised"));
9
- chai_1.default.use(chai_as_promised_1.default);
10
- const should = chai_1.default.should();
11
- describe('ImageElementPlugin', function () {
12
- it('should exist', function () {
13
- should.exist(index_1.default);
14
- });
15
- });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaWMtc3BlY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvYmFzaWMtc3BlY3MuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx3REFBNkM7QUFDN0MsZ0RBQXdCO0FBQ3hCLHdFQUE4QztBQUU5QyxjQUFJLENBQUMsR0FBRyxDQUFDLDBCQUFjLENBQUMsQ0FBQztBQUN6QixNQUFNLE1BQU0sR0FBRyxjQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFHN0IsUUFBUSxDQUFDLG9CQUFvQixFQUFFO0lBQzdCLEVBQUUsQ0FBQyxjQUFjLEVBQUU7UUFDakIsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFrQixDQUFDLENBQUM7SUFDbkMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyJ9