@applitools/spec-driver-playwright 1.3.22 → 1.3.24

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,57 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.3.24](https://github.com/applitools/eyes.sdk.javascript1/compare/js/spec-driver-playwright@1.3.23...js/spec-driver-playwright@1.3.24) (2023-08-30)
4
+
5
+
6
+ ### Dependencies
7
+
8
+ * @applitools/utils bumped to 1.5.2
9
+ #### Bug Fixes
10
+
11
+ * fixed some types ([498b1d7](https://github.com/applitools/eyes.sdk.javascript1/commit/498b1d7c547df04773b64b66ee39cccb402c093e))
12
+ * @applitools/logger bumped to 2.0.9
13
+
14
+ * @applitools/driver bumped to 1.13.6
15
+
16
+
17
+ ## [1.3.23](https://github.com/applitools/eyes.sdk.javascript1/compare/js/spec-driver-playwright@1.3.22...js/spec-driver-playwright@1.3.23) (2023-08-18)
18
+
19
+
20
+ ### Code Refactoring
21
+
22
+ * refactored spec driver interface ([#1839](https://github.com/applitools/eyes.sdk.javascript1/issues/1839)) ([aa49ec2](https://github.com/applitools/eyes.sdk.javascript1/commit/aa49ec2a7d14b8529acc3a8a4c2baecfa113d98a))
23
+
24
+
25
+ ### Dependencies
26
+
27
+ * @applitools/utils bumped to 1.5.1
28
+ #### Code Refactoring
29
+
30
+ * refactored spec driver interface ([#1839](https://github.com/applitools/eyes.sdk.javascript1/issues/1839)) ([aa49ec2](https://github.com/applitools/eyes.sdk.javascript1/commit/aa49ec2a7d14b8529acc3a8a4c2baecfa113d98a))
31
+ * @applitools/logger bumped to 2.0.8
32
+ #### Code Refactoring
33
+
34
+ * refactored spec driver interface ([#1839](https://github.com/applitools/eyes.sdk.javascript1/issues/1839)) ([aa49ec2](https://github.com/applitools/eyes.sdk.javascript1/commit/aa49ec2a7d14b8529acc3a8a4c2baecfa113d98a))
35
+
36
+
37
+
38
+ * @applitools/snippets bumped to 2.4.23
39
+ #### Code Refactoring
40
+
41
+ * refactored spec driver interface ([#1839](https://github.com/applitools/eyes.sdk.javascript1/issues/1839)) ([aa49ec2](https://github.com/applitools/eyes.sdk.javascript1/commit/aa49ec2a7d14b8529acc3a8a4c2baecfa113d98a))
42
+ * @applitools/driver bumped to 1.13.5
43
+ #### Bug Fixes
44
+
45
+ * 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))
46
+
47
+
48
+ #### Code Refactoring
49
+
50
+ * refactored spec driver interface ([#1839](https://github.com/applitools/eyes.sdk.javascript1/issues/1839)) ([aa49ec2](https://github.com/applitools/eyes.sdk.javascript1/commit/aa49ec2a7d14b8529acc3a8a4c2baecfa113d98a))
51
+
52
+
53
+
54
+
3
55
  ## [1.3.22](https://github.com/applitools/eyes.sdk.javascript1/compare/js/spec-driver-playwright@1.3.21...js/spec-driver-playwright@1.3.22) (2023-08-10)
4
56
 
5
57
 
@@ -23,12 +23,11 @@ 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 fs = __importStar(require("fs"));
28
28
  const os = __importStar(require("os"));
29
29
  const path = __importStar(require("path"));
30
30
  const utils = __importStar(require("@applitools/utils"));
31
- // #region HELPERS
32
31
  async function handleToObject(handle) {
33
32
  var _a;
34
33
  let [, type] = (_a = handle.toString().match(/(?:.+@)?(\w*)(?:\(\d+\))?/i)) !== null && _a !== void 0 ? _a : [];
@@ -49,8 +48,6 @@ async function handleToObject(handle) {
49
48
  return handle.jsonValue();
50
49
  }
51
50
  }
52
- // #endregion
53
- // #region UTILITY
54
51
  function isDriver(page) {
55
52
  if (!page)
56
53
  return false;
@@ -75,7 +72,16 @@ function isSelector(selector) {
75
72
  return utils.types.isString(selector) || utils.types.instanceOf(selector, 'Locator');
76
73
  }
77
74
  exports.isSelector = isSelector;
78
- function transformSelector(selector) {
75
+ function isStaleElementError(err) {
76
+ var _a, _b, _c, _d;
77
+ return (((_a = err === null || err === void 0 ? void 0 : err.message) === null || _a === void 0 ? void 0 : _a.includes('Element is not attached to the DOM')) || // universal message
78
+ ((_b = err === null || err === void 0 ? void 0 : err.message) === null || _b === void 0 ? void 0 : _b.includes('Protocol error (DOM.describeNode)')) || // chrome message
79
+ ((_c = err === null || err === void 0 ? void 0 : err.message) === null || _c === void 0 ? void 0 : _c.includes('Protocol error (Page.adoptNode)')) || // firefox message
80
+ ((_d = err === null || err === void 0 ? void 0 : err.message) === null || _d === void 0 ? void 0 : _d.includes('Unable to adopt element handle from a different document')) // webkit message
81
+ );
82
+ }
83
+ exports.isStaleElementError = isStaleElementError;
84
+ function toSelector(selector) {
79
85
  if (utils.types.has(selector, 'selector')) {
80
86
  if (!utils.types.has(selector, 'type'))
81
87
  return selector.selector;
@@ -84,8 +90,8 @@ function transformSelector(selector) {
84
90
  }
85
91
  return selector;
86
92
  }
87
- exports.transformSelector = transformSelector;
88
- function untransformSelector(selector) {
93
+ exports.toSelector = toSelector;
94
+ function toSimpleCommonSelector(selector) {
89
95
  if (utils.types.instanceOf(selector, 'Locator')) {
90
96
  ;
91
97
  [, selector] = selector.toString().match(/Locator@(.+)/);
@@ -94,48 +100,17 @@ function untransformSelector(selector) {
94
100
  return { selector };
95
101
  return selector;
96
102
  }
97
- exports.untransformSelector = untransformSelector;
103
+ exports.toSimpleCommonSelector = toSimpleCommonSelector;
98
104
  function extractContext(page) {
99
105
  return isDriver(page) ? page.mainFrame() : page;
100
106
  }
101
107
  exports.extractContext = extractContext;
102
- function isStaleElementError(err) {
103
- var _a, _b, _c, _d;
104
- return (((_a = err === null || err === void 0 ? void 0 : err.message) === null || _a === void 0 ? void 0 : _a.includes('Element is not attached to the DOM')) || // universal message
105
- ((_b = err === null || err === void 0 ? void 0 : err.message) === null || _b === void 0 ? void 0 : _b.includes('Protocol error (DOM.describeNode)')) || // chrome message
106
- ((_c = err === null || err === void 0 ? void 0 : err.message) === null || _c === void 0 ? void 0 : _c.includes('Protocol error (Page.adoptNode)')) || // firefox message
107
- ((_d = err === null || err === void 0 ? void 0 : err.message) === null || _d === void 0 ? void 0 : _d.includes('Unable to adopt element handle from a different document')) // webkit message
108
- );
109
- }
110
- exports.isStaleElementError = isStaleElementError;
111
- // #endregion
112
- // #region COMMANDS
113
108
  async function executeScript(frame, script, arg) {
114
109
  script = utils.types.isString(script) ? new Function(script) : script;
115
110
  const result = await frame.evaluateHandle(script, arg);
116
111
  return handleToObject(result);
117
112
  }
118
113
  exports.executeScript = executeScript;
119
- async function mainContext(frame) {
120
- frame = extractContext(frame);
121
- let mainFrame = frame;
122
- while (mainFrame.parentFrame()) {
123
- mainFrame = mainFrame.parentFrame();
124
- }
125
- return mainFrame;
126
- }
127
- exports.mainContext = mainContext;
128
- async function parentContext(frame) {
129
- var _a;
130
- frame = extractContext(frame);
131
- return (_a = frame.parentFrame()) !== null && _a !== void 0 ? _a : frame;
132
- }
133
- exports.parentContext = parentContext;
134
- async function childContext(_frame, element) {
135
- const frame = (await element.contentFrame());
136
- return frame;
137
- }
138
- exports.childContext = childContext;
139
114
  async function findElement(frame, selector, parent) {
140
115
  if (utils.types.instanceOf(selector, 'Locator')) {
141
116
  return selector.elementHandle();
@@ -157,6 +132,36 @@ async function setElementText(frame, element, text) {
157
132
  await (resolvedElement === null || resolvedElement === void 0 ? void 0 : resolvedElement.fill(text));
158
133
  }
159
134
  exports.setElementText = setElementText;
135
+ async function hover(_frame, element) {
136
+ await element.hover();
137
+ }
138
+ exports.hover = hover;
139
+ async function click(_frame, element) {
140
+ await element.click();
141
+ }
142
+ exports.click = click;
143
+ async function mainContext(frame) {
144
+ let mainFrame = frame;
145
+ while (mainFrame.parentFrame()) {
146
+ mainFrame = mainFrame.parentFrame();
147
+ }
148
+ return mainFrame;
149
+ }
150
+ exports.mainContext = mainContext;
151
+ async function parentContext(frame) {
152
+ var _a;
153
+ return (_a = frame.parentFrame()) !== null && _a !== void 0 ? _a : frame;
154
+ }
155
+ exports.parentContext = parentContext;
156
+ async function childContext(_frame, element) {
157
+ const frame = (await element.contentFrame());
158
+ return frame;
159
+ }
160
+ exports.childContext = childContext;
161
+ async function getDriverInfo(_page) {
162
+ return { features: { allCookies: true } };
163
+ }
164
+ exports.getDriverInfo = getDriverInfo;
160
165
  async function getViewportSize(page) {
161
166
  return page.viewportSize();
162
167
  }
@@ -174,10 +179,6 @@ async function getCookies(page) {
174
179
  });
175
180
  }
176
181
  exports.getCookies = getCookies;
177
- async function getDriverInfo(_page) {
178
- return { features: { allCookies: true } };
179
- }
180
- exports.getDriverInfo = getDriverInfo;
181
182
  async function getTitle(page) {
182
183
  return page.title();
183
184
  }
@@ -194,24 +195,6 @@ async function takeScreenshot(page) {
194
195
  return page.screenshot();
195
196
  }
196
197
  exports.takeScreenshot = takeScreenshot;
197
- async function click(frame, element) {
198
- const resolvedElement = isSelector(element) ? await findElement(frame, element) : element;
199
- await (resolvedElement === null || resolvedElement === void 0 ? void 0 : resolvedElement.click());
200
- }
201
- exports.click = click;
202
- async function hover(frame, element) {
203
- const resolvedElement = isSelector(element) ? await findElement(frame, element) : element;
204
- await (resolvedElement === null || resolvedElement === void 0 ? void 0 : resolvedElement.hover());
205
- }
206
- exports.hover = hover;
207
- async function waitUntilDisplayed(frame, selector) {
208
- if (utils.types.instanceOf(selector, 'Locator'))
209
- return selector.waitFor();
210
- await frame.waitForSelector(selector);
211
- }
212
- exports.waitUntilDisplayed = waitUntilDisplayed;
213
- // #endregion
214
- // #region BUILD
215
198
  const browserNames = {
216
199
  chrome: 'chromium',
217
200
  safari: 'webkit',
@@ -287,4 +270,3 @@ async function build(env) {
287
270
  return [page, () => (driver ? driver.close() : context.close())];
288
271
  }
289
272
  exports.build = build;
290
- // #endregion
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@applitools/spec-driver-playwright",
3
- "version": "1.3.22",
3
+ "version": "1.3.24",
4
4
  "keywords": [
5
5
  "playwright",
6
6
  "chrome devtools protocol",
@@ -37,17 +37,17 @@
37
37
  "test": "run --top-level mocha './test/**/*.spec.ts' --exit",
38
38
  "setup": "yarn playwright:setup",
39
39
  "playwright:setup": "sudo npx playwright install-deps",
40
- "up:framework": "run --top-level add-silent playwright"
40
+ "up:framework": "yarn add --dev --caret playwright${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.6",
44
+ "@applitools/utils": "1.5.2"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@applitools/api-extractor": "^1.2.21",
48
48
  "@applitools/test-utils": "^1.5.17",
49
49
  "@types/node": "^12.20.55",
50
- "playwright": "^1.34.3"
50
+ "playwright": "^1.37.0"
51
51
  },
52
52
  "peerDependencies": {
53
53
  "playwright": ">=1.0.0"
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<Node>;
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<Node>): Promise<Context>;
15
12
  export function findElement(frame: Context, selector: Selector, parent?: undefined | Element<Node>): Promise<null | Element<SVGElement | HTMLElement>>;
16
13
  export function findElements(frame: Context, selector: Selector, parent?: undefined | Element<Node>): Promise<Array<Element<SVGElement | HTMLElement>>>;
17
14
  export function setElementText(frame: Context, element: Selector | Element<Node>, text: string): Promise<void>;
15
+ export function hover(_frame: Context, element: Element<Node>): Promise<void>;
16
+ export function click(_frame: Context, element: Element<Node>): 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<Node>): 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<Node>): Promise<void>;
27
- export function hover(frame: Context, element: Selector | Element<Node>): 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('playwright-core').Page & { __applitoolsBrand?: undefined; };
31
30
  export type Context = import('playwright-core').Frame & { __applitoolsBrand?: undefined; };
32
31
  export type Element<T = Node> = import('playwright-core').ElementHandle<T> & { __applitoolsBrand?: undefined; };
33
32
  export type Selector = (string | import('playwright-core').Locator) & { __applitoolsBrand?: undefined; };
34
- export type SpecType = { driver: Driver; context: Context; element: Element<Node>; selector: Selector; };
33
+ export type PrimarySpecType = {
34
+ driver: Driver;
35
+ context: Context;
36
+ element: Element<Node>;
37
+ selector: Selector;
38
+ secondary: never;
39
+ };
40
+ export type SpecDriver = import('@applitools/driver').SpecDriver<PrimarySpecType>;