ftmocks-utils 1.5.4 → 1.5.5

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ftmocks-utils",
3
- "version": "1.5.4",
3
+ "version": "1.5.5",
4
4
  "description": "Util functions for FtMocks",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -20,7 +20,7 @@ const createDiffImage = async (img1, img2, diffPath) => {
20
20
  threshold: 0.1, // sensitivity
21
21
  diffColor: [255, 0, 0], // highlight color (red)
22
22
  diffMask: false,
23
- }
23
+ },
24
24
  );
25
25
 
26
26
  fs.writeFileSync(diffPath, PNG.sync.write(diff));
@@ -58,7 +58,7 @@ const matchAndReplaceScreenshot = async (page, event, screenshotsDir) => {
58
58
  await createDiffImage(
59
59
  img1,
60
60
  img2,
61
- path.join(screenshotsDir, `diff_${event.id}.png`)
61
+ path.join(screenshotsDir, `diff_${event.id}.png`),
62
62
  );
63
63
  return {
64
64
  replaced: true,
@@ -170,6 +170,8 @@ const runEvent = async ({
170
170
  screenshots = false,
171
171
  screenshotsDir = null,
172
172
  healSelectors = false,
173
+ eventsFile = null,
174
+ allEvents = null,
173
175
  }) => {
174
176
  try {
175
177
  const beforeEvent = async () => {
@@ -178,7 +180,7 @@ const runEvent = async ({
178
180
  const res = await matchAndReplaceScreenshot(
179
181
  page,
180
182
  event,
181
- screenshotsDir
183
+ screenshotsDir,
182
184
  );
183
185
  if (res.replaced) {
184
186
  const locator = await getLocator(page, event);
@@ -200,7 +202,7 @@ const runEvent = async ({
200
202
  page,
201
203
  event,
202
204
  event.target,
203
- position
205
+ position,
204
206
  );
205
207
  event.target = healedTarget.value;
206
208
  const selectors = [];
@@ -210,7 +212,7 @@ const runEvent = async ({
210
212
  page,
211
213
  event,
212
214
  event.selectors[i].value,
213
- position
215
+ position,
214
216
  );
215
217
  event.selectors[i].value = healedSelector.value;
216
218
  if (healedSelector.count !== 1) {
@@ -273,6 +275,10 @@ const runEvent = async ({
273
275
  default:
274
276
  return "Unsupported event type";
275
277
  }
278
+ if (eventsFile && allEvents) {
279
+ allEvents.find((e) => e.id === event.id).executed = true;
280
+ fs.writeFileSync(eventsFile, JSON.stringify(allEvents, null, 2));
281
+ }
276
282
  } catch (error) {
277
283
  console.error("Error running event", {
278
284
  error: error.message,
@@ -321,6 +327,8 @@ const runEvents = async ({
321
327
  screenshots = false,
322
328
  screenshotsDir = null,
323
329
  healSelectors = false,
330
+ eventsFile = null,
331
+ allEvents = null,
324
332
  }) => {
325
333
  for (const event of events) {
326
334
  await runEvent({
@@ -330,6 +338,8 @@ const runEvents = async ({
330
338
  screenshots,
331
339
  screenshotsDir,
332
340
  healSelectors,
341
+ eventsFile,
342
+ allEvents,
333
343
  });
334
344
  }
335
345
  };
@@ -338,14 +348,19 @@ const runEventsForTest = async (page, ftmocksConifg, testName) => {
338
348
  const eventsFile = path.join(
339
349
  getMockDir(ftmocksConifg),
340
350
  `test_${nameToFolder(testName)}`,
341
- `_events.json`
351
+ `_events.json`,
342
352
  );
343
353
  const events = JSON.parse(fs.readFileSync(eventsFile, "utf8"));
354
+ events.forEach((event) => {
355
+ event.executed = false;
356
+ });
344
357
  await runEvents({
345
358
  page,
346
359
  events,
347
360
  delay: ftmocksConifg.delay || 1000,
348
361
  screenshots: false,
362
+ eventsFile,
363
+ allEvents: events,
349
364
  });
350
365
  };
351
366
 
@@ -354,19 +369,32 @@ const runEventsInPresentationMode = async (page, ftmocksConifg, testName) => {
354
369
  const eventsFile = path.join(
355
370
  getMockDir(ftmocksConifg),
356
371
  `test_${nameToFolder(testName)}`,
357
- `_events.json`
372
+ `_events.json`,
358
373
  );
359
374
  const events = JSON.parse(fs.readFileSync(eventsFile, "utf8"));
375
+ events.forEach((event) => {
376
+ event.executed = false;
377
+ });
360
378
 
361
379
  // Expose Node function
362
380
  await page.exposeFunction("nextEvent", async () => {
363
381
  if (currentEventIndex === events.length) {
364
382
  return false;
365
383
  }
366
- let result = await runEvent({ page, event: events[currentEventIndex] });
384
+ let result = await runEvent({
385
+ page,
386
+ event: events[currentEventIndex],
387
+ eventsFile,
388
+ allEvents: events,
389
+ });
367
390
  while (result === "Unsupported event type") {
368
391
  currentEventIndex = currentEventIndex + 1;
369
- result = await runEvent({ page, event: events[currentEventIndex] });
392
+ result = await runEvent({
393
+ page,
394
+ event: events[currentEventIndex],
395
+ eventsFile,
396
+ allEvents: events,
397
+ });
370
398
  }
371
399
  currentEventIndex = currentEventIndex + 1;
372
400
  return true;
@@ -401,7 +429,7 @@ const runEventsInPresentationMode = async (page, ftmocksConifg, testName) => {
401
429
  });
402
430
  });
403
431
 
404
- await runEvent({ page, event: events[0] });
432
+ await runEvent({ page, event: events[0], eventsFile, allEvents: events });
405
433
  };
406
434
 
407
435
  const runEventsInTrainingMode = async (page, ftmocksConifg, testName) => {
@@ -409,15 +437,17 @@ const runEventsInTrainingMode = async (page, ftmocksConifg, testName) => {
409
437
  const eventsFile = path.join(
410
438
  getMockDir(ftmocksConifg),
411
439
  `test_${nameToFolder(testName)}`,
412
- `_events.json`
440
+ `_events.json`,
413
441
  );
414
442
  const events = JSON.parse(fs.readFileSync(eventsFile, "utf8"));
415
-
443
+ events.forEach((event) => {
444
+ event.executed = false;
445
+ });
416
446
  // Expose Node function
417
447
  await page.exposeFunction("getNextEvent", async () => {
418
448
  let result = false;
419
449
  let nonExecutedEvents = events.filter(
420
- (event) => !executedEvents.includes(event?.id)
450
+ (event) => !executedEvents.includes(event?.id),
421
451
  );
422
452
  let currentEventIndex = -1;
423
453
  while (!result) {
@@ -431,11 +461,11 @@ const runEventsInTrainingMode = async (page, ftmocksConifg, testName) => {
431
461
  if (nonExecutedEvents[currentEventIndex]) {
432
462
  console.log(
433
463
  "➡ Getting locator for event",
434
- nonExecutedEvents[currentEventIndex]
464
+ nonExecutedEvents[currentEventIndex],
435
465
  );
436
466
  const selector = await getLocator(
437
467
  page,
438
- nonExecutedEvents[currentEventIndex]
468
+ nonExecutedEvents[currentEventIndex],
439
469
  );
440
470
  const position = await getSelectorPosition(page, selector);
441
471
  const element = await page.locator(selector).elementHandle();
@@ -641,16 +671,19 @@ const runEventsInTrainingMode = async (page, ftmocksConifg, testName) => {
641
671
  });
642
672
  });
643
673
 
644
- await runEvent({ page, event: events[0] });
674
+ await runEvent({ page, event: events[0], eventsFile, allEvents: events });
645
675
  };
646
676
 
647
677
  const runEventsForScreenshots = async (page, ftmocksConifg, testName) => {
648
678
  const eventsFile = path.join(
649
679
  getMockDir(ftmocksConifg),
650
680
  `test_${nameToFolder(testName)}`,
651
- `_events.json`
681
+ `_events.json`,
652
682
  );
653
683
  const events = JSON.parse(fs.readFileSync(eventsFile, "utf8"));
684
+ events.forEach((event) => {
685
+ event.executed = false;
686
+ });
654
687
  await runEvents({
655
688
  page,
656
689
  events,
@@ -659,8 +692,10 @@ const runEventsForScreenshots = async (page, ftmocksConifg, testName) => {
659
692
  screenshotsDir: path.join(
660
693
  getMockDir(ftmocksConifg),
661
694
  `test_${nameToFolder(testName)}`,
662
- `screenshots`
695
+ `screenshots`,
663
696
  ),
697
+ eventsFile,
698
+ allEvents: events,
664
699
  });
665
700
  fs.writeFileSync(eventsFile, JSON.stringify(events, null, 2));
666
701
  await page.waitForTimeout(1000);
@@ -671,14 +706,19 @@ const runEventsForHealingSelectors = async (page, ftmocksConifg, testName) => {
671
706
  const eventsFile = path.join(
672
707
  getMockDir(ftmocksConifg),
673
708
  `test_${nameToFolder(testName)}`,
674
- `_events.json`
709
+ `_events.json`,
675
710
  );
676
711
  const events = JSON.parse(fs.readFileSync(eventsFile, "utf8"));
712
+ events.forEach((event) => {
713
+ event.executed = false;
714
+ });
677
715
  await runEvents({
678
716
  page,
679
717
  events,
680
718
  delay: ftmocksConifg.delay || 1000,
681
719
  healSelectors: true,
720
+ eventsFile,
721
+ allEvents: events,
682
722
  });
683
723
  fs.writeFileSync(eventsFile, JSON.stringify(events, null, 2));
684
724
  await page.waitForTimeout(1000);