@applitools/core 4.0.0 → 4.0.2

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/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## [4.0.2](https://github.com/applitools/eyes.sdk.javascript1/compare/js/core@4.0.1...js/core@4.0.2) (2023-10-30)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * generate safe selectors as close as possible to taking dom snapshot ([#1987](https://github.com/applitools/eyes.sdk.javascript1/issues/1987)) ([102208b](https://github.com/applitools/eyes.sdk.javascript1/commit/102208b909c0b149808f6e4c24a0a662305b1b78))
9
+
10
+ ## [4.0.1](https://github.com/applitools/eyes.sdk.javascript1/compare/js/core@4.0.0...js/core@4.0.1) (2023-10-25)
11
+
12
+
13
+ ### Dependencies
14
+
15
+ * @applitools/tunnel-client bumped to 1.3.0
16
+ #### Features
17
+
18
+ * add more logs for tunnel worker ([60cf839](https://github.com/applitools/eyes.sdk.javascript1/commit/60cf839f23b214dff89ff4a9c59f231c96160daf))
19
+ * @applitools/ec-client bumped to 1.7.14
20
+
21
+
3
22
  ## [4.0.0](https://github.com/applitools/eyes.sdk.javascript1/compare/js/core@3.11.8...js/core@4.0.0) (2023-10-17)
4
23
 
5
24
 
@@ -27,10 +27,11 @@ exports.extractCrossFrames = exports.takeDomSnapshot = void 0;
27
27
  const utils = __importStar(require("@applitools/utils"));
28
28
  const { getProcessPagePoll, getPollResult, getProcessPagePollForIE, getPollResultForIE, } = require('@applitools/dom-snapshot');
29
29
  async function takeDomSnapshot({ context, settings, logger, }) {
30
+ var _a;
30
31
  const driver = context.driver;
31
32
  const environment = await driver.getEnvironment();
32
33
  const features = await driver.getFeatures();
33
- const cookies = features.allCookies ? await driver.getCookies().catch(() => []) : [];
34
+ const cookies = ((_a = settings === null || settings === void 0 ? void 0 : settings.cookies) !== null && _a !== void 0 ? _a : features.allCookies) ? await driver.getCookies().catch(() => []) : [];
34
35
  const snapshot = transformRawDomSnapshot(await takeContextDomSnapshot({ context }));
35
36
  snapshot.cookies = cookies;
36
37
  return snapshot;
@@ -37,7 +37,10 @@ const chalk_1 = __importDefault(require("chalk"));
37
37
  const utils = __importStar(require("@applitools/utils"));
38
38
  __exportStar(require("./take-dom-snapshot"), exports);
39
39
  async function takeDomSnapshots({ driver, settings, hooks, provides, logger, }) {
40
- var _a, _b, _c, _d, _e, _f, _g;
40
+ var _a, _b, _c, _d, _e, _f;
41
+ // calculating cookies here once so that we (a) don't do it for each dom snapshot, and (b) do it before generating safe selectors
42
+ const features = await driver.getFeatures();
43
+ settings.cookies = features.allCookies ? await driver.getCookies().catch(() => []) : [];
41
44
  const currentContext = driver.currentContext;
42
45
  let calculateRegionsResults = {};
43
46
  const waitBeforeCapture = async () => {
@@ -55,21 +58,22 @@ async function takeDomSnapshots({ driver, settings, hooks, provides, logger, })
55
58
  logger,
56
59
  });
57
60
  }
58
- if (!((_a = settings.layoutBreakpoints) === null || _a === void 0 ? void 0 : _a.reload) && settings.calculateRegionsOptions) {
59
- calculateRegionsResults = await (0, calculate_regions_1.calculateRegions)({
60
- ...settings.calculateRegionsOptions,
61
- driver,
62
- });
63
- }
64
61
  if (!settings.layoutBreakpoints) {
65
62
  logger.log(`taking single dom snapshot`);
66
- await ((_b = hooks === null || hooks === void 0 ? void 0 : hooks.beforeEachSnapshot) === null || _b === void 0 ? void 0 : _b.call(hooks));
63
+ await ((_a = hooks === null || hooks === void 0 ? void 0 : hooks.beforeEachSnapshot) === null || _a === void 0 ? void 0 : _a.call(hooks));
67
64
  await waitBeforeCapture();
65
+ // it's important that we calculate safe selectors as close as possible to taking the dom snapshot
66
+ if (settings.calculateRegionsOptions) {
67
+ calculateRegionsResults = await (0, calculate_regions_1.calculateRegions)({
68
+ ...settings.calculateRegionsOptions,
69
+ driver,
70
+ });
71
+ }
68
72
  const snapshot = await (0, take_dom_snapshot_1.takeDomSnapshot)({ context: currentContext, settings, logger });
69
- await ((_c = calculateRegionsResults === null || calculateRegionsResults === void 0 ? void 0 : calculateRegionsResults.cleanupGeneratedSelectors) === null || _c === void 0 ? void 0 : _c.call(calculateRegionsResults));
73
+ await ((_b = calculateRegionsResults === null || calculateRegionsResults === void 0 ? void 0 : calculateRegionsResults.cleanupGeneratedSelectors) === null || _b === void 0 ? void 0 : _b.call(calculateRegionsResults));
70
74
  return Array(settings.environments.length).fill({ snapshot, ...calculateRegionsResults });
71
75
  }
72
- const isStrictBreakpoints = utils.types.isArray((_d = settings.layoutBreakpoints) === null || _d === void 0 ? void 0 : _d.breakpoints);
76
+ const isStrictBreakpoints = utils.types.isArray((_c = settings.layoutBreakpoints) === null || _c === void 0 ? void 0 : _c.breakpoints);
73
77
  const requiredWidths = await settings.environments.reduce(async (prev, environment, index) => {
74
78
  const { name, width } = (await extractEnvironmentInfo(environment));
75
79
  const requiredWidths = await prev;
@@ -97,8 +101,15 @@ async function takeDomSnapshots({ driver, settings, hooks, provides, logger, })
97
101
  const snapshotsResults = Array(settings.environments.length);
98
102
  if (requiredWidths.has(viewportSize.width)) {
99
103
  logger.log(`taking dom snapshot for existing width ${viewportSize.width}`);
100
- await ((_e = hooks === null || hooks === void 0 ? void 0 : hooks.beforeEachSnapshot) === null || _e === void 0 ? void 0 : _e.call(hooks));
104
+ await ((_d = hooks === null || hooks === void 0 ? void 0 : hooks.beforeEachSnapshot) === null || _d === void 0 ? void 0 : _d.call(hooks));
101
105
  await waitBeforeCapture();
106
+ // it's important that we calculate safe selectors as close as possible to taking the dom snapshot
107
+ if (settings.calculateRegionsOptions) {
108
+ calculateRegionsResults = await (0, calculate_regions_1.calculateRegions)({
109
+ ...settings.calculateRegionsOptions,
110
+ driver,
111
+ });
112
+ }
102
113
  const snapshot = await (0, take_dom_snapshot_1.takeDomSnapshot)({ context: currentContext, settings, logger });
103
114
  requiredWidths.get(viewportSize.width).forEach(({ index }) => {
104
115
  snapshotsResults[index] = { snapshot, ...calculateRegionsResults };
@@ -108,16 +119,6 @@ async function takeDomSnapshots({ driver, settings, hooks, provides, logger, })
108
119
  logger.log(`taking dom snapshot for width ${requiredWidth}`);
109
120
  try {
110
121
  await driver.setViewportSize({ width: requiredWidth, height: viewportSize.height });
111
- if (settings.layoutBreakpoints.reload) {
112
- await driver.reloadPage();
113
- await waitBeforeCapture();
114
- if (settings.calculateRegionsOptions) {
115
- calculateRegionsResults = await (0, calculate_regions_1.calculateRegions)({
116
- ...settings.calculateRegionsOptions,
117
- driver,
118
- });
119
- }
120
- }
121
122
  }
122
123
  catch (err) {
123
124
  logger.error(err);
@@ -135,8 +136,20 @@ async function takeDomSnapshots({ driver, settings, hooks, provides, logger, })
135
136
  logger.log(message);
136
137
  }
137
138
  }
138
- await ((_f = hooks === null || hooks === void 0 ? void 0 : hooks.beforeEachSnapshot) === null || _f === void 0 ? void 0 : _f.call(hooks));
139
+ if (settings.layoutBreakpoints.reload) {
140
+ await driver.reloadPage();
141
+ }
142
+ await ((_e = hooks === null || hooks === void 0 ? void 0 : hooks.beforeEachSnapshot) === null || _e === void 0 ? void 0 : _e.call(hooks));
139
143
  await waitBeforeCapture();
144
+ if (settings.layoutBreakpoints.reload) {
145
+ // it's important that we calculate safe selectors as close as possible to taking the dom snapshot
146
+ if (settings.calculateRegionsOptions) {
147
+ calculateRegionsResults = await (0, calculate_regions_1.calculateRegions)({
148
+ ...settings.calculateRegionsOptions,
149
+ driver,
150
+ });
151
+ }
152
+ }
140
153
  const snapshot = await (0, take_dom_snapshot_1.takeDomSnapshot)({ context: currentContext, settings, logger });
141
154
  browsersInfo.forEach(({ index }) => {
142
155
  snapshotsResults[index] = { snapshot, ...calculateRegionsResults };
@@ -148,7 +161,7 @@ async function takeDomSnapshots({ driver, settings, hooks, provides, logger, })
148
161
  await waitBeforeCapture();
149
162
  }
150
163
  else {
151
- (_g = calculateRegionsResults === null || calculateRegionsResults === void 0 ? void 0 : calculateRegionsResults.cleanupGeneratedSelectors) === null || _g === void 0 ? void 0 : _g.call(calculateRegionsResults);
164
+ (_f = calculateRegionsResults === null || calculateRegionsResults === void 0 ? void 0 : calculateRegionsResults.cleanupGeneratedSelectors) === null || _f === void 0 ? void 0 : _f.call(calculateRegionsResults);
152
165
  }
153
166
  return snapshotsResults;
154
167
  function calculateBreakpoint({ breakpoints, value }) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@applitools/core",
3
- "version": "4.0.0",
3
+ "version": "4.0.2",
4
4
  "homepage": "https://applitools.com",
5
5
  "bugs": {
6
6
  "url": "https://github.com/applitools/eyes.sdk.javascript1/issues"
@@ -72,7 +72,7 @@
72
72
  "@applitools/dom-capture": "11.2.3",
73
73
  "@applitools/dom-snapshot": "4.7.12",
74
74
  "@applitools/driver": "1.14.4",
75
- "@applitools/ec-client": "1.7.13",
75
+ "@applitools/ec-client": "1.7.14",
76
76
  "@applitools/logger": "2.0.12",
77
77
  "@applitools/nml-client": "1.5.14",
78
78
  "@applitools/req": "1.6.2",
@@ -97,11 +97,10 @@
97
97
  "@applitools/spec-driver-selenium": "^1.5.62",
98
98
  "@applitools/test-server": "^1.2.2",
99
99
  "@applitools/test-utils": "^1.5.17",
100
- "@applitools/tunnel-client": "^1.2.4",
100
+ "@applitools/tunnel-client": "^1.3.0",
101
101
  "@types/node": "^12.20.55",
102
102
  "@types/selenium-webdriver": "^4.1.2",
103
103
  "@types/yargs": "^17.0.22",
104
- "chromedriver": "^115.0.1",
105
104
  "nock": "^13.3.2",
106
105
  "png-async": "^0.9.4",
107
106
  "puppeteer": "^19.11.1",
@@ -1,5 +1,5 @@
1
1
  import { type Logger } from '@applitools/logger';
2
- import { type SpecType, type Context } from '@applitools/driver';
2
+ import { type SpecType, type Context, type Cookie } from '@applitools/driver';
3
3
  import { type DomSnapshot } from '@applitools/ufg-client';
4
4
  export type RawDomSnapshot = {
5
5
  url: string;
@@ -30,6 +30,7 @@ export type DomSnapshotSettings = {
30
30
  executionTimeout?: number;
31
31
  pollTimeout?: number;
32
32
  showLogs?: boolean;
33
+ cookies?: Cookie[];
33
34
  };
34
35
  export declare function takeDomSnapshot<TSpec extends SpecType>({ context, settings, logger, }: {
35
36
  context: Context<TSpec>;