@applitools/spec-driver-puppeteer 1.1.72 → 1.1.73

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,43 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.1.73](https://github.com/applitools/eyes.sdk.javascript1/compare/js/spec-driver-puppeteer@1.1.72...js/spec-driver-puppeteer@1.1.73) (2023-08-18)
4
+
5
+
6
+ ### Code Refactoring
7
+
8
+ * refactored spec driver interface ([#1839](https://github.com/applitools/eyes.sdk.javascript1/issues/1839)) ([aa49ec2](https://github.com/applitools/eyes.sdk.javascript1/commit/aa49ec2a7d14b8529acc3a8a4c2baecfa113d98a))
9
+
10
+
11
+ ### Dependencies
12
+
13
+ * @applitools/utils bumped to 1.5.1
14
+ #### Code Refactoring
15
+
16
+ * refactored spec driver interface ([#1839](https://github.com/applitools/eyes.sdk.javascript1/issues/1839)) ([aa49ec2](https://github.com/applitools/eyes.sdk.javascript1/commit/aa49ec2a7d14b8529acc3a8a4c2baecfa113d98a))
17
+ * @applitools/logger bumped to 2.0.8
18
+ #### Code Refactoring
19
+
20
+ * refactored spec driver interface ([#1839](https://github.com/applitools/eyes.sdk.javascript1/issues/1839)) ([aa49ec2](https://github.com/applitools/eyes.sdk.javascript1/commit/aa49ec2a7d14b8529acc3a8a4c2baecfa113d98a))
21
+
22
+
23
+
24
+ * @applitools/snippets bumped to 2.4.23
25
+ #### Code Refactoring
26
+
27
+ * refactored spec driver interface ([#1839](https://github.com/applitools/eyes.sdk.javascript1/issues/1839)) ([aa49ec2](https://github.com/applitools/eyes.sdk.javascript1/commit/aa49ec2a7d14b8529acc3a8a4c2baecfa113d98a))
28
+ * @applitools/driver bumped to 1.13.5
29
+ #### Bug Fixes
30
+
31
+ * optimize driver usage in close ([#1867](https://github.com/applitools/eyes.sdk.javascript1/issues/1867)) ([60dff6b](https://github.com/applitools/eyes.sdk.javascript1/commit/60dff6b160e69d3893c91a1125d668fa18b43072))
32
+
33
+
34
+ #### Code Refactoring
35
+
36
+ * refactored spec driver interface ([#1839](https://github.com/applitools/eyes.sdk.javascript1/issues/1839)) ([aa49ec2](https://github.com/applitools/eyes.sdk.javascript1/commit/aa49ec2a7d14b8529acc3a8a4c2baecfa113d98a))
37
+
38
+
39
+
40
+
3
41
  ## [1.1.72](https://github.com/applitools/eyes.sdk.javascript1/compare/js/spec-driver-puppeteer@1.1.71...js/spec-driver-puppeteer@1.1.72) (2023-08-03)
4
42
 
5
43
 
@@ -23,10 +23,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.build = exports.waitUntilDisplayed = exports.hover = exports.click = exports.takeScreenshot = exports.visit = exports.getUrl = exports.getTitle = exports.getDriverInfo = exports.getCookies = exports.setViewportSize = exports.getViewportSize = exports.setElementText = exports.findElements = exports.findElement = exports.childContext = exports.parentContext = exports.mainContext = exports.executeScript = exports.isStaleElementError = exports.extractContext = exports.untransformSelector = exports.transformSelector = exports.isSelector = exports.isElement = exports.isContext = exports.isDriver = void 0;
26
+ exports.build = exports.takeScreenshot = exports.visit = exports.getUrl = exports.getTitle = exports.getCookies = exports.setViewportSize = exports.getViewportSize = exports.getDriverInfo = exports.childContext = exports.parentContext = exports.mainContext = exports.click = exports.hover = exports.setElementText = exports.findElements = exports.findElement = exports.executeScript = exports.extractContext = exports.toSimpleCommonSelector = exports.toSelector = exports.isStaleElementError = exports.isSelector = exports.isElement = exports.isContext = exports.isDriver = void 0;
27
27
  const utils = __importStar(require("@applitools/utils"));
28
- // #region HELPERS
29
- const XPATH_SELECTOR_START = ['/', '(', '../', './', '*/'];
30
28
  async function handleToObject(handle) {
31
29
  const [, type] = handle.toString().split('@');
32
30
  if (type === 'array') {
@@ -98,11 +96,10 @@ function scriptRunner(script, arg, ...elements) {
98
96
  }
99
97
  }
100
98
  }
99
+ const XPATH_SELECTOR_START = ['/', '(', '../', './', '*/'];
101
100
  function isXpathSelector(selector) {
102
101
  return XPATH_SELECTOR_START.some(start => selector.startsWith(start));
103
102
  }
104
- // #endregion
105
- // #region UTILITY
106
103
  function isDriver(page) {
107
104
  if (!page)
108
105
  return false;
@@ -125,40 +122,61 @@ function isSelector(selector) {
125
122
  return utils.types.isString(selector);
126
123
  }
127
124
  exports.isSelector = isSelector;
128
- function transformSelector(selector) {
125
+ function isStaleElementError(err) {
126
+ var _a, _b, _c;
127
+ return (((_a = err === null || err === void 0 ? void 0 : err.message) === null || _a === void 0 ? void 0 : _a.includes('Execution context was destroyed')) ||
128
+ ((_b = err === null || err === void 0 ? void 0 : err.message) === null || _b === void 0 ? void 0 : _b.includes('Cannot find context with specified id')) ||
129
+ ((_c = err === null || err === void 0 ? void 0 : err.message) === null || _c === void 0 ? void 0 : _c.includes('JSHandles can be evaluated only in the context they were created')));
130
+ }
131
+ exports.isStaleElementError = isStaleElementError;
132
+ function toSelector(selector) {
129
133
  if (utils.types.has(selector, 'selector'))
130
134
  return selector.selector;
131
135
  return selector;
132
136
  }
133
- exports.transformSelector = transformSelector;
134
- function untransformSelector(selector) {
137
+ exports.toSelector = toSelector;
138
+ function toSimpleCommonSelector(selector) {
135
139
  if (utils.types.isString(selector)) {
136
140
  return { type: isXpathSelector(selector) ? 'xpath' : 'css', selector };
137
141
  }
138
142
  return selector;
139
143
  }
140
- exports.untransformSelector = untransformSelector;
144
+ exports.toSimpleCommonSelector = toSimpleCommonSelector;
141
145
  function extractContext(page) {
142
146
  return isDriver(page) ? page.mainFrame() : page;
143
147
  }
144
148
  exports.extractContext = extractContext;
145
- function isStaleElementError(err) {
146
- var _a, _b, _c;
147
- return (((_a = err === null || err === void 0 ? void 0 : err.message) === null || _a === void 0 ? void 0 : _a.includes('Execution context was destroyed')) ||
148
- ((_b = err === null || err === void 0 ? void 0 : err.message) === null || _b === void 0 ? void 0 : _b.includes('Cannot find context with specified id')) ||
149
- ((_c = err === null || err === void 0 ? void 0 : err.message) === null || _c === void 0 ? void 0 : _c.includes('JSHandles can be evaluated only in the context they were created')));
150
- }
151
- exports.isStaleElementError = isStaleElementError;
152
- // #endregion
153
- // #region COMMANDS
154
149
  async function executeScript(frame, script, arg) {
155
150
  script = utils.types.isString(script) ? script : `function() {return (${script.toString()}).apply(null, arguments)}`;
156
151
  const result = await frame.evaluateHandle(scriptRunner, script, ...transformArgument(arg));
157
152
  return handleToObject(result);
158
153
  }
159
154
  exports.executeScript = executeScript;
155
+ async function findElement(frame, selector, parent) {
156
+ const root = parent !== null && parent !== void 0 ? parent : frame;
157
+ return (isXpathSelector(selector) ? root.$x(selector).then(elements => elements[0]) : root.$(selector));
158
+ }
159
+ exports.findElement = findElement;
160
+ async function findElements(frame, selector, parent) {
161
+ const root = parent !== null && parent !== void 0 ? parent : frame;
162
+ return (isXpathSelector(selector) ? root.$x(selector) : root.$$(selector));
163
+ }
164
+ exports.findElements = findElements;
165
+ async function setElementText(frame, element, text) {
166
+ const resolvedElement = isSelector(element) ? await findElement(frame, element) : element;
167
+ await (resolvedElement === null || resolvedElement === void 0 ? void 0 : resolvedElement.evaluate(element => (element.value = '')));
168
+ await (resolvedElement === null || resolvedElement === void 0 ? void 0 : resolvedElement.type(text));
169
+ }
170
+ exports.setElementText = setElementText;
171
+ async function hover(_frame, element) {
172
+ await element.hover();
173
+ }
174
+ exports.hover = hover;
175
+ async function click(_frame, element) {
176
+ await element.click();
177
+ }
178
+ exports.click = click;
160
179
  async function mainContext(frame) {
161
- frame = extractContext(frame);
162
180
  let mainFrame = frame;
163
181
  while (mainFrame.parentFrame()) {
164
182
  mainFrame = mainFrame.parentFrame();
@@ -168,7 +186,6 @@ async function mainContext(frame) {
168
186
  exports.mainContext = mainContext;
169
187
  async function parentContext(frame) {
170
188
  var _a;
171
- frame = extractContext(frame);
172
189
  return (_a = frame.parentFrame()) !== null && _a !== void 0 ? _a : frame;
173
190
  }
174
191
  exports.parentContext = parentContext;
@@ -177,22 +194,10 @@ async function childContext(_frame, element) {
177
194
  return frame;
178
195
  }
179
196
  exports.childContext = childContext;
180
- async function findElement(frame, selector, parent) {
181
- const root = parent !== null && parent !== void 0 ? parent : frame;
182
- return (isXpathSelector(selector) ? root.$x(selector).then(elements => elements[0]) : root.$(selector));
183
- }
184
- exports.findElement = findElement;
185
- async function findElements(frame, selector, parent) {
186
- const root = parent !== null && parent !== void 0 ? parent : frame;
187
- return (isXpathSelector(selector) ? root.$x(selector) : root.$$(selector));
188
- }
189
- exports.findElements = findElements;
190
- async function setElementText(frame, element, text) {
191
- const resolvedElement = isSelector(element) ? await findElement(frame, element) : element;
192
- await (resolvedElement === null || resolvedElement === void 0 ? void 0 : resolvedElement.evaluate(element => (element.value = '')));
193
- await (resolvedElement === null || resolvedElement === void 0 ? void 0 : resolvedElement.type(text));
197
+ async function getDriverInfo(_page) {
198
+ return { features: { allCookies: true } };
194
199
  }
195
- exports.setElementText = setElementText;
200
+ exports.getDriverInfo = getDriverInfo;
196
201
  async function getViewportSize(page) {
197
202
  return page.viewport();
198
203
  }
@@ -218,10 +223,6 @@ async function getCookies(page) {
218
223
  });
219
224
  }
220
225
  exports.getCookies = getCookies;
221
- async function getDriverInfo(_page) {
222
- return { features: { allCookies: true } };
223
- }
224
- exports.getDriverInfo = getDriverInfo;
225
226
  async function getTitle(page) {
226
227
  return page.title();
227
228
  }
@@ -239,22 +240,6 @@ async function takeScreenshot(page) {
239
240
  return result;
240
241
  }
241
242
  exports.takeScreenshot = takeScreenshot;
242
- async function click(frame, element) {
243
- const resolvedElement = isSelector(element) ? await findElement(frame, element) : element;
244
- await (resolvedElement === null || resolvedElement === void 0 ? void 0 : resolvedElement.click());
245
- }
246
- exports.click = click;
247
- async function hover(frame, element) {
248
- const resolvedElement = isSelector(element) ? await findElement(frame, element) : element;
249
- await (resolvedElement === null || resolvedElement === void 0 ? void 0 : resolvedElement.hover());
250
- }
251
- exports.hover = hover;
252
- async function waitUntilDisplayed(frame, selector) {
253
- await frame.waitForSelector(selector);
254
- }
255
- exports.waitUntilDisplayed = waitUntilDisplayed;
256
- // #endregion
257
- // #region BUILD
258
243
  const browserNames = ['chrome', 'firefox'];
259
244
  /*
260
245
  * Spawn a browser with a given configuration (INTERNAL USE ONLY)
@@ -304,4 +289,3 @@ async function build(env) {
304
289
  return [page, () => driver.close()];
305
290
  }
306
291
  exports.build = build;
307
- // #endregion
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@applitools/spec-driver-puppeteer",
3
- "version": "1.1.72",
3
+ "version": "1.1.73",
4
4
  "keywords": [
5
5
  "puppeteer",
6
6
  "chrome devtools protocol",
@@ -37,11 +37,11 @@
37
37
  "test": "run --top-level mocha './test/**/*.spec.ts' --exit",
38
38
  "setup": "yarn puppeteer:setup",
39
39
  "puppeteer:setup": "PUPPETEER_PRODUCT=firefox node --require puppeteer/install.js --eval null",
40
- "up:framework": "run --top-level add-silent puppeteer"
40
+ "up:framework": "yarn add --dev --caret puppeteer${APPLITOOLS_FRAMEWORK_VERSION:+@$APPLITOOLS_FRAMEWORK_VERSION}"
41
41
  },
42
42
  "dependencies": {
43
- "@applitools/driver": "1.13.4",
44
- "@applitools/utils": "1.5.0"
43
+ "@applitools/driver": "1.13.5",
44
+ "@applitools/utils": "1.5.1"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@applitools/api-extractor": "^1.2.21",
package/types/index.d.ts CHANGED
@@ -1,34 +1,40 @@
1
- declare const _default: import('@applitools/driver').SpecDriver<SpecType>;
1
+ declare const _default: SpecDriver;
2
2
  export default _default;
3
3
  export function isDriver(page: any): page is Driver;
4
4
  export function isContext(frame: any): frame is Context;
5
5
  export function isElement(element: any): element is Element<globalThis.Element>;
6
6
  export function isSelector(selector: any): selector is Selector;
7
- export function transformSelector(selector: import('@applitools/driver').CommonSelector<Selector>): Selector;
8
- export function untransformSelector(selector: Selector): import('@applitools/driver').CommonSelector;
9
- export function extractContext(page: Driver | Context): Context;
10
7
  export function isStaleElementError(err: any): boolean;
8
+ export function toSelector(selector: import('@applitools/driver').CommonSelector<Selector>): Selector;
9
+ export function toSimpleCommonSelector(selector: Selector): import('@applitools/driver').CommonSelector;
10
+ export function extractContext(page: Driver): Context;
11
11
  export function executeScript(frame: Context, script: string | ((arg: any) => any), arg: any): Promise<any>;
12
- export function mainContext(frame: Context): Promise<Context>;
13
- export function parentContext(frame: Context): Promise<Context>;
14
- export function childContext(_frame: Context, element: Element<globalThis.Element>): Promise<Context>;
15
12
  export function findElement(frame: Context, selector: Selector, parent?: undefined | Element<globalThis.Element>): Promise<null | Element<globalThis.Element>>;
16
13
  export function findElements(frame: Context, selector: Selector, parent?: undefined | Element<globalThis.Element>): Promise<Array<Element<globalThis.Element>>>;
17
14
  export function setElementText(frame: Context, element: Selector | Element<globalThis.Element>, text: string): Promise<void>;
15
+ export function hover(_frame: Context, element: Element<globalThis.Element>): Promise<void>;
16
+ export function click(_frame: Context, element: Element<globalThis.Element>): Promise<void>;
17
+ export function mainContext(frame: Context): Promise<Context>;
18
+ export function parentContext(frame: Context): Promise<Context>;
19
+ export function childContext(_frame: Context, element: Element<globalThis.Element>): Promise<Context>;
20
+ export function getDriverInfo(_page: Driver): Promise<import('@applitools/driver').DriverInfo>;
18
21
  export function getViewportSize(page: Driver): Promise<{ width: number; height: number; }>;
19
22
  export function setViewportSize(page: Driver, size: { width: number; height: number; }): Promise<void>;
20
23
  export function getCookies(page: Driver): Promise<Array<import('@applitools/driver').Cookie>>;
21
- export function getDriverInfo(_page: Driver): Promise<import('@applitools/driver').DriverInfo>;
22
24
  export function getTitle(page: Driver): Promise<string>;
23
25
  export function getUrl(page: Driver): Promise<string>;
24
26
  export function visit(page: Driver, url: string): Promise<void>;
25
27
  export function takeScreenshot(page: Driver): Promise<Buffer>;
26
- export function click(frame: Context, element: Selector | Element<globalThis.Element>): Promise<void>;
27
- export function hover(frame: Context, element: Selector | Element<globalThis.Element>): Promise<void>;
28
- export function waitUntilDisplayed(frame: Context, selector: Selector): Promise<void>;
29
28
  export function build(env: any): Promise<[Driver, () => Promise<void>]>;
30
29
  export type Driver = import('puppeteer').Page & { __applitoolsBrand?: undefined; };
31
30
  export type Context = import('puppeteer').Frame & { __applitoolsBrand?: undefined; };
32
31
  export type Element<T extends globalThis.Element = globalThis.Element> = import('puppeteer').ElementHandle<T> & { __applitoolsBrand?: undefined; };
33
32
  export type Selector = string & { __applitoolsBrand?: undefined; };
34
- export type SpecType = { driver: Driver; context: Context; element: Element<globalThis.Element>; selector: Selector; };
33
+ export type PrimarySpecType = {
34
+ driver: Driver;
35
+ context: Context;
36
+ element: Element<globalThis.Element>;
37
+ selector: Selector;
38
+ secondary: never;
39
+ };
40
+ export type SpecDriver = import('@applitools/driver').SpecDriver<PrimarySpecType>;