@applitools/visual-grid-cli-utils 1.21.19 → 1.21.23

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": "@applitools/visual-grid-cli-utils",
3
- "version": "1.21.19",
3
+ "version": "1.21.23",
4
4
  "description": "",
5
5
  "main": "src/visual-grid-cli-utils.js",
6
6
  "engines": {
@@ -17,6 +17,7 @@
17
17
  "vg-cli": "scripts/run-visual-grid-cli-utils.js"
18
18
  },
19
19
  "scripts": {
20
+ "distribute": "pkg scripts/run-visual-grid-cli-utils.js --out-path dist",
20
21
  "start": "scripts/run-visual-grid-cli-utils.js",
21
22
  "test:mocha": "mocha --no-timeouts --exit 'test/unit/*.test.js' 'test/it/*.test.js' 'test/e2e/*.test.js'",
22
23
  "test": "npm run eslint && npm run test:mocha",
@@ -62,6 +63,7 @@
62
63
  "eslint-plugin-node": "^11.1.0",
63
64
  "eslint-plugin-prettier": "^3.4.1",
64
65
  "mocha": "^8.3.2",
66
+ "pkg": "^5.5.2",
65
67
  "prettier": "^2.2.1"
66
68
  }
67
69
  }
@@ -0,0 +1,15 @@
1
+ 'use strict'
2
+ function normalizeChainedSelectorsArray(chainedSelectors) {
3
+ const cs = []
4
+ for (let i = 0; i < chainedSelectors.length; i += 2) {
5
+ cs.push({
6
+ selector: chainedSelectors[i],
7
+ type: chainedSelectors[i].startsWith('//') ? 'xpath' : 'css',
8
+ nodeType: i + 1 < chainedSelectors.length ? chainedSelectors[i + 1] : 'element',
9
+ })
10
+ }
11
+
12
+ return cs
13
+ }
14
+
15
+ module.exports = normalizeChainedSelectorsArray
@@ -12,13 +12,14 @@ async function waitForRendering(vgUrl, renderId, authToken, waitTimeout = 10 * 6
12
12
  `failed to get rendering status. Error from Visual Grid: ${await response.text()}`,
13
13
  )
14
14
  }
15
- const {status, error, imageLocation, domLocation, selectorRegions} = await response.json()
15
+ const {status, error, imageLocation, domLocation, selectorRegions, fullPageSize} =
16
+ await response.json()
16
17
  if (status === 'error') {
17
18
  return [error]
18
19
  } else if (status === 'rendering') {
19
20
  throw new Error(``)
20
21
  } else {
21
- return [undefined, imageLocation, domLocation, selectorRegions]
22
+ return [undefined, imageLocation, domLocation, selectorRegions, fullPageSize]
22
23
  }
23
24
  },
24
25
  {
package/src/rerender.js CHANGED
@@ -10,6 +10,7 @@ const {writeImageLocationToFile, writeDomLocationToFile} = require('./write-imag
10
10
  const {plotDomCaptureToHtml} = require('./plot-dom-capture-to-html')
11
11
  const {convertBrowserNameToCanary} = require('./commons/parse-browser')
12
12
  const parseJson = require('./commons/parse-json.js')
13
+ const normalizeChainedSelectorsArray = require('./commons/normalizeChainedSelectorsArray')
13
14
 
14
15
  async function main({
15
16
  apiKey,
@@ -39,11 +40,13 @@ async function main({
39
40
  rca,
40
41
  native,
41
42
  viewRendering,
43
+ includeFullPageSize,
42
44
  canary,
43
45
  iosVersion,
44
46
  timeout,
45
47
  options: optionsAsString,
46
48
  selectorsToFindRegionsFor,
49
+ vhsCompatibilityParams,
47
50
  }) {
48
51
  const options = parseJson(optionsAsString, 'options')
49
52
  options.chromeHeadless = headless
@@ -73,11 +76,17 @@ async function main({
73
76
  version: canary ? 'canary' : iosVersion,
74
77
  }
75
78
  : undefined,
79
+ vhsCompatibilityParams: vhsCompatibilityParams
80
+ ? {
81
+ UIKitLinkTimeVersionNumber: vhsCompatibilityParams[0],
82
+ UIKitRunTimeVersionNumber: vhsCompatibilityParams[1],
83
+ }
84
+ : undefined,
76
85
  androidDeviceInfo: androidDeviceName
77
86
  ? {
78
87
  name: androidDeviceName,
79
88
  screenOrientation: androidDeviceOrientation,
80
- version: androidVersion,
89
+ version: canary ? 'canary' : androidVersion,
81
90
  }
82
91
  : undefined,
83
92
  vhsType: androidDeviceName ? androidVhsType : undefined,
@@ -95,6 +104,7 @@ async function main({
95
104
  ? normalizeSelectorsToFindRegionsForArray(selectorsToFindRegionsFor)
96
105
  : undefined,
97
106
  enableMultipleResultsPerSelector: true,
107
+ includeFullPageSize,
98
108
  sendDom: rca,
99
109
  agentId: `visual-grid-cli-utils/${require('../package.json').version}`,
100
110
  // browser: {
@@ -120,7 +130,7 @@ async function main({
120
130
 
121
131
  const {renderId: reRenderId} = await response.json()
122
132
 
123
- const [err, imageLocation, domLocation, selectorRegions] = await waitForRendering(
133
+ const [err, imageLocation, domLocation, selectorRegions, fullPageSize] = await waitForRendering(
124
134
  vgUrl,
125
135
  reRenderId,
126
136
  authToken,
@@ -172,20 +182,14 @@ async function main({
172
182
  console.log('\n' + calculateViewRenderingUrl(renderId, authToken))
173
183
  }
174
184
 
175
- return {reRenderId}
176
- }
177
-
178
- function normalizeChainedSelectorsArray(chainedSelectors) {
179
- const cs = []
180
- for (let i = 0; i < chainedSelectors.length; i += 2) {
181
- cs.push({
182
- selector: chainedSelectors[i],
183
- type: chainedSelectors[i].startsWith('//') ? 'xpath' : 'css',
184
- nodeType: i + 1 < chainedSelectors.length ? chainedSelectors[i + 1] : 'element',
185
- })
185
+ if (includeFullPageSize) {
186
+ console.log('-----')
187
+ console.log(`Full page size:`)
188
+ console.log(JSON.stringify(fullPageSize, null, 2))
189
+ console.log('-----')
186
190
  }
187
191
 
188
- return cs
192
+ return {reRenderId}
189
193
  }
190
194
 
191
195
  function normalizeSelectorsToFindRegionsForArray(selectorsToFindRegionsFor) {
package/src/test-url.js CHANGED
@@ -8,6 +8,7 @@ const createSession = require('./commons/create-session')
8
8
  const calculateViewRenderingUrl = require('./commons/view-rendering-url')
9
9
  const {convertBrowserNameToCanary} = require('./commons/parse-browser')
10
10
  const parseJson = require('./commons/parse-json.js')
11
+ const normalizeChainedSelectorsArray = require('./commons/normalizeChainedSelectorsArray')
11
12
 
12
13
  async function main({
13
14
  apiKey,
@@ -16,6 +17,7 @@ async function main({
16
17
  height,
17
18
  target,
18
19
  selector,
20
+ chainedSelectors,
19
21
  rca,
20
22
  iosDeviceName,
21
23
  iosDeviceOrientation,
@@ -114,8 +116,13 @@ async function main({
114
116
  checkWindow({
115
117
  snapshot: frame,
116
118
  url: frame.url,
117
- target: selector ? 'region' : target,
118
- selector: selector ? {selector, type: selector.startsWith('//') ? 'xpath' : 'css'} : undefined,
119
+ // target: selector ? 'region' : target,
120
+ sizeMode: selector ? 'region' : target,
121
+ selector: selector
122
+ ? {selector, type: selector.startsWith('//') ? 'xpath' : 'css'}
123
+ : chainedSelectors
124
+ ? normalizeChainedSelectorsArray(chainedSelectors)
125
+ : undefined,
119
126
  sendDom: rca,
120
127
  visualGridOptions: options,
121
128
  ...(selectorsToFindRegionsFor && {
@@ -170,6 +170,11 @@ async function main(argv, {shouldExitOnError = false} = {}) {
170
170
  choices: ['viewport', 'full-page', 'selector', 'full-selector'],
171
171
  default: 'full-page',
172
172
  })
173
+ .option('vhs-compatibility-params', {
174
+ describe:
175
+ 'should specify vhs compatibility params if running ios native jobs. Specify the value of UIKitLinkTimeVersionNumber followed by the value of UIKitRunTimeVersionNumber - e.g. --vhs-compatibility-params 4555 5067',
176
+ type: 'array',
177
+ })
173
178
  .option('selector', {
174
179
  describe: 'target a specific element (via CSS selector)',
175
180
  type: 'string',
@@ -219,6 +224,12 @@ async function main(argv, {shouldExitOnError = false} = {}) {
219
224
  type: 'boolean',
220
225
  default: false,
221
226
  })
227
+ .option('includeFullPageSize', {
228
+ alias: 'f',
229
+ describe: 'output the full page size after rendering',
230
+ type: 'boolean',
231
+ default: false,
232
+ })
222
233
  .option('timeout', {
223
234
  alias: 't',
224
235
  describe: 'Timeout for operation (ms)',
@@ -402,6 +413,11 @@ async function main(argv, {shouldExitOnError = false} = {}) {
402
413
  describe: 'target a specific element (via CSS selector)',
403
414
  type: 'string',
404
415
  })
416
+ .option('chained-selectors', {
417
+ describe:
418
+ 'target an element inside a shadow-root or an iframe. Specify selectors in the following format: --chained-selectors "<selector1>" "<nodeType(iframe | shadow-root | element)>" "<selector2>" "<nodeType>"',
419
+ type: 'array',
420
+ })
405
421
  .option('width', {
406
422
  describe: 'width of viewport',
407
423
  type: 'number',