@applitools/eyes-cypress 3.28.0 → 3.28.1
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 +6 -0
- package/bin/eyes-setup.js +21 -21
- package/index.js +2 -2
- package/package.json +9 -7
- package/src/browser/commands.js +79 -84
- package/src/browser/eyesCheckMapping.js +69 -71
- package/src/browser/eyesOpenMapping.js +28 -32
- package/src/browser/makeSend.js +5 -10
- package/src/browser/refer.js +28 -28
- package/src/browser/sendRequest.js +6 -6
- package/src/browser/socket.js +72 -73
- package/src/browser/socketCommands.js +34 -45
- package/src/plugin/concurrencyMsg.js +4 -4
- package/src/plugin/config.js +16 -17
- package/src/plugin/configParams.js +3 -3
- package/src/plugin/defaultPort.js +1 -1
- package/src/plugin/errorDigest.js +27 -35
- package/src/plugin/getErrorsAndDiffs.js +11 -11
- package/src/plugin/handleTestResults.js +16 -19
- package/src/plugin/hooks.js +12 -12
- package/src/plugin/isGlobalHooksSupported.js +6 -7
- package/src/plugin/pluginExport.js +38 -43
- package/src/plugin/server.js +50 -53
- package/src/plugin/startPlugin.js +9 -9
- package/src/plugin/webSocket.js +63 -64
- package/src/setup/addEyesCommands.js +12 -12
- package/src/setup/addEyesCypressPlugin.js +6 -6
- package/src/setup/getCypressPaths.js +28 -32
- package/src/setup/getCypressVersion.js +7 -9
- package/src/setup/getFilePath.js +8 -8
- package/src/setup/handleCommands.js +11 -11
- package/src/setup/handlePlugin.js +10 -10
- package/src/setup/handleTypeScript.js +8 -8
- package/src/setup/isCommandsDefined.js +3 -3
- package/src/setup/isPluginDefined.js +3 -3
package/CHANGELOG.md
CHANGED
package/bin/eyes-setup.js
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
'use strict'
|
|
2
|
+
'use strict'
|
|
3
3
|
|
|
4
|
-
const chalk = require('chalk')
|
|
5
|
-
const handlePlugin = require('../src/setup/handlePlugin')
|
|
6
|
-
const handleCommands = require('../src/setup/handleCommands')
|
|
7
|
-
const {handleTypeScript} = require('../src/setup/handleTypeScript')
|
|
8
|
-
const getCypressVersion = require('../src/setup/getCypressVersion')
|
|
9
|
-
const getCypressPaths = require('../src/setup/getCypressPaths')
|
|
4
|
+
const chalk = require('chalk')
|
|
5
|
+
const handlePlugin = require('../src/setup/handlePlugin')
|
|
6
|
+
const handleCommands = require('../src/setup/handleCommands')
|
|
7
|
+
const {handleTypeScript} = require('../src/setup/handleTypeScript')
|
|
8
|
+
const getCypressVersion = require('../src/setup/getCypressVersion')
|
|
9
|
+
const getCypressPaths = require('../src/setup/getCypressPaths')
|
|
10
10
|
|
|
11
|
-
const cwd = process.cwd()
|
|
12
|
-
const semver = require('semver')
|
|
13
|
-
const {version} = require('../package')
|
|
11
|
+
const cwd = process.cwd()
|
|
12
|
+
const semver = require('semver')
|
|
13
|
+
const {version} = require('../package')
|
|
14
14
|
|
|
15
|
-
console.log(chalk.cyan('Setup Eyes-Cypress', version))
|
|
15
|
+
console.log(chalk.cyan('Setup Eyes-Cypress', version))
|
|
16
16
|
|
|
17
|
-
const cypressVersion = getCypressVersion()
|
|
18
|
-
console.log(chalk.cyan(`Cypress version: ${cypressVersion}`))
|
|
17
|
+
const cypressVersion = getCypressVersion()
|
|
18
|
+
console.log(chalk.cyan(`Cypress version: ${cypressVersion}`))
|
|
19
19
|
|
|
20
|
-
const isCypress10 = semver.satisfies(cypressVersion, '>=10.0.0')
|
|
20
|
+
const isCypress10 = semver.satisfies(cypressVersion, '>=10.0.0')
|
|
21
21
|
try {
|
|
22
|
-
const {plugin, support, typescript} = getCypressPaths({cwd, isCypress10})
|
|
23
|
-
handlePlugin(plugin)
|
|
24
|
-
handleCommands(support)
|
|
25
|
-
handleTypeScript(typescript)
|
|
22
|
+
const {plugin, support, typescript} = getCypressPaths({cwd, isCypress10})
|
|
23
|
+
handlePlugin(plugin)
|
|
24
|
+
handleCommands(support)
|
|
25
|
+
handleTypeScript(typescript)
|
|
26
26
|
} catch (err) {
|
|
27
|
-
console.log(chalk.red(`Setup error:\n${err.message}`))
|
|
28
|
-
process.exit(1)
|
|
27
|
+
console.log(chalk.red(`Setup error:\n${err.message}`))
|
|
28
|
+
process.exit(1)
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
console.log(chalk.cyan('Setup done!'))
|
|
31
|
+
console.log(chalk.cyan('Setup done!'))
|
package/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
module.exports = require('./src/plugin/startPlugin')
|
|
1
|
+
'use strict'
|
|
2
|
+
module.exports = require('./src/plugin/startPlugin')
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@applitools/eyes-cypress",
|
|
3
|
-
"version": "3.28.
|
|
3
|
+
"version": "3.28.1",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git://github.com/applitools/eyes.sdk.javascript1.git",
|
|
@@ -56,8 +56,8 @@
|
|
|
56
56
|
}
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
|
-
"@applitools/core": "1.3.
|
|
60
|
-
"@applitools/eyes-api": "1.11.
|
|
59
|
+
"@applitools/core": "1.3.7",
|
|
60
|
+
"@applitools/eyes-api": "1.11.6",
|
|
61
61
|
"@applitools/eyes-universal": "2.18.0",
|
|
62
62
|
"@applitools/functional-commons": "1.6.0",
|
|
63
63
|
"@applitools/logger": "1.1.36",
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
"@applitools/sdk-coverage-tests": "^2.7.10",
|
|
74
74
|
"@applitools/snaptdout": "1.0.1",
|
|
75
75
|
"@applitools/test-server": "1.1.16",
|
|
76
|
-
"@applitools/test-utils": "1.5.
|
|
76
|
+
"@applitools/test-utils": "1.5.6",
|
|
77
77
|
"@applitools/utils": "1.3.22",
|
|
78
78
|
"@types/node": "12",
|
|
79
79
|
"@types/which": "^2.0.1",
|
|
@@ -85,16 +85,18 @@
|
|
|
85
85
|
"cookie-parser": "1.4.4",
|
|
86
86
|
"cypress": "9.7.0",
|
|
87
87
|
"eslint": "8.10.0",
|
|
88
|
+
"eslint-config-prettier": "^8.5.0",
|
|
88
89
|
"eslint-plugin-mocha-no-only": "1.1.0",
|
|
89
|
-
"eslint-plugin-
|
|
90
|
-
"eslint-plugin-
|
|
90
|
+
"eslint-plugin-no-only-tests": "^3.0.0",
|
|
91
|
+
"eslint-plugin-node": "^11.1.0",
|
|
92
|
+
"eslint-plugin-prettier": "^4.0.0",
|
|
91
93
|
"husky": "4.3.8",
|
|
92
94
|
"lodash.omit": "4.5.0",
|
|
93
95
|
"mocha": "8.0.1",
|
|
94
96
|
"morgan": "1.9.1",
|
|
95
97
|
"ncp": "2.0.0",
|
|
96
98
|
"node-fetch": "2.6.0",
|
|
97
|
-
"prettier": "
|
|
99
|
+
"prettier": "^2.6.2",
|
|
98
100
|
"typescript": "4.8.4"
|
|
99
101
|
},
|
|
100
102
|
"engines": {
|
package/src/browser/commands.js
CHANGED
|
@@ -1,45 +1,44 @@
|
|
|
1
1
|
/* global Cypress,cy,after */
|
|
2
|
-
'use strict'
|
|
3
|
-
const spec = require('../../dist/browser/spec-driver')
|
|
4
|
-
const Refer = require('./refer')
|
|
5
|
-
const Socket = require('./socket')
|
|
6
|
-
const {socketCommands} = require('./socketCommands')
|
|
7
|
-
const {eyesOpenMapValues} = require('./eyesOpenMapping')
|
|
8
|
-
const {eyesCheckMapValues} = require('./eyesCheckMapping')
|
|
9
|
-
const {TestResultsSummary} = require('@applitools/eyes-api')
|
|
10
|
-
const refer = new Refer()
|
|
11
|
-
const socket = new Socket()
|
|
12
|
-
const throwErr = Cypress.config('failCypressOnDiff')
|
|
13
|
-
socketCommands(socket, refer)
|
|
14
|
-
let connectedToUniversal = false
|
|
2
|
+
'use strict'
|
|
3
|
+
const spec = require('../../dist/browser/spec-driver')
|
|
4
|
+
const Refer = require('./refer')
|
|
5
|
+
const Socket = require('./socket')
|
|
6
|
+
const {socketCommands} = require('./socketCommands')
|
|
7
|
+
const {eyesOpenMapValues} = require('./eyesOpenMapping')
|
|
8
|
+
const {eyesCheckMapValues} = require('./eyesCheckMapping')
|
|
9
|
+
const {TestResultsSummary} = require('@applitools/eyes-api')
|
|
10
|
+
const refer = new Refer()
|
|
11
|
+
const socket = new Socket()
|
|
12
|
+
const throwErr = Cypress.config('failCypressOnDiff')
|
|
13
|
+
socketCommands(socket, refer)
|
|
14
|
+
let connectedToUniversal = false
|
|
15
15
|
|
|
16
16
|
let manager,
|
|
17
17
|
eyes,
|
|
18
|
-
closePromiseArr = []
|
|
18
|
+
closePromiseArr = []
|
|
19
19
|
|
|
20
20
|
function getGlobalConfigProperty(prop) {
|
|
21
|
-
const property = Cypress.config(prop)
|
|
22
|
-
const shouldParse = ['eyesBrowser', 'eyesLayoutBreakpoints']
|
|
23
|
-
return property ? (shouldParse.includes(prop) ? JSON.parse(property) : property) : undefined
|
|
21
|
+
const property = Cypress.config(prop)
|
|
22
|
+
const shouldParse = ['eyesBrowser', 'eyesLayoutBreakpoints']
|
|
23
|
+
return property ? (shouldParse.includes(prop) ? JSON.parse(property) : property) : undefined
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
const shouldUseBrowserHooks =
|
|
27
27
|
!getGlobalConfigProperty('eyesIsDisabled') &&
|
|
28
|
-
(getGlobalConfigProperty('isInteractive') ||
|
|
29
|
-
!getGlobalConfigProperty('eyesIsGlobalHooksSupported'));
|
|
28
|
+
(getGlobalConfigProperty('isInteractive') || !getGlobalConfigProperty('eyesIsGlobalHooksSupported'))
|
|
30
29
|
|
|
31
30
|
Cypress.Commands.add('eyesGetAllTestResults', () => {
|
|
32
|
-
Cypress.log({name: 'Eyes: getAllTestResults'})
|
|
31
|
+
Cypress.log({name: 'Eyes: getAllTestResults'})
|
|
33
32
|
return cy.then({timeout: 86400000}, async () => {
|
|
34
33
|
if (isCurrentTestDisabled) {
|
|
35
|
-
isCurrentTestDisabled = false
|
|
36
|
-
return
|
|
34
|
+
isCurrentTestDisabled = false
|
|
35
|
+
return
|
|
37
36
|
}
|
|
38
|
-
await Promise.all(closePromiseArr)
|
|
39
|
-
const summary = await socket.request('EyesManager.closeManager', {manager, throwErr})
|
|
37
|
+
await Promise.all(closePromiseArr)
|
|
38
|
+
const summary = await socket.request('EyesManager.closeManager', {manager, throwErr})
|
|
40
39
|
|
|
41
40
|
const deleteTest = ({settings: {testId, batchId, secretToken}}) => {
|
|
42
|
-
const {serverUrl, proxy, apiKey} = Cypress.config('appliConfFile')
|
|
41
|
+
const {serverUrl, proxy, apiKey} = Cypress.config('appliConfFile')
|
|
43
42
|
return socket.request('Core.deleteTest', {
|
|
44
43
|
settings: {
|
|
45
44
|
testId,
|
|
@@ -49,22 +48,22 @@ Cypress.Commands.add('eyesGetAllTestResults', () => {
|
|
|
49
48
|
proxy,
|
|
50
49
|
apiKey,
|
|
51
50
|
},
|
|
52
|
-
})
|
|
53
|
-
}
|
|
51
|
+
})
|
|
52
|
+
}
|
|
54
53
|
summary.results = summary.results.map(res => {
|
|
55
|
-
return {...res, result: res.testResults, error: res.exception, renderer: res.browserInfo}
|
|
56
|
-
})
|
|
57
|
-
return new TestResultsSummary({summary, deleteTest})
|
|
58
|
-
})
|
|
59
|
-
})
|
|
54
|
+
return {...res, result: res.testResults, error: res.exception, renderer: res.browserInfo}
|
|
55
|
+
})
|
|
56
|
+
return new TestResultsSummary({summary, deleteTest})
|
|
57
|
+
})
|
|
58
|
+
})
|
|
60
59
|
|
|
61
60
|
if (shouldUseBrowserHooks || Cypress.config('eyesFailCypressOnDiff')) {
|
|
62
61
|
after(() => {
|
|
63
|
-
if (!manager) return
|
|
62
|
+
if (!manager) return
|
|
64
63
|
return cy.then({timeout: 86400000}, async () => {
|
|
65
64
|
if (isCurrentTestDisabled) {
|
|
66
|
-
isCurrentTestDisabled = false
|
|
67
|
-
return
|
|
65
|
+
isCurrentTestDisabled = false
|
|
66
|
+
return
|
|
68
67
|
}
|
|
69
68
|
const resultConfig = {
|
|
70
69
|
showLogs: Cypress.config('appliConfFile').showLogs,
|
|
@@ -73,63 +72,59 @@ if (shouldUseBrowserHooks || Cypress.config('eyesFailCypressOnDiff')) {
|
|
|
73
72
|
tapDirPath: Cypress.config('appliConfFile').tapDirPath,
|
|
74
73
|
tapFileName: Cypress.config('appliConfFile').tapFileName,
|
|
75
74
|
shouldCreateTapFile: shouldUseBrowserHooks,
|
|
76
|
-
}
|
|
77
|
-
await Promise.all(closePromiseArr)
|
|
78
|
-
const summary = await socket.request('EyesManager.closeManager', {manager, throwErr})
|
|
79
|
-
const testResults = summary.results.map(({testResults}) => testResults)
|
|
80
|
-
const message = await socket.request('Test.printTestResults', {testResults, resultConfig})
|
|
75
|
+
}
|
|
76
|
+
await Promise.all(closePromiseArr)
|
|
77
|
+
const summary = await socket.request('EyesManager.closeManager', {manager, throwErr})
|
|
78
|
+
const testResults = summary.results.map(({testResults}) => testResults)
|
|
79
|
+
const message = await socket.request('Test.printTestResults', {testResults, resultConfig})
|
|
81
80
|
if (
|
|
82
81
|
!!getGlobalConfigProperty('eyesFailCypressOnDiff') &&
|
|
83
82
|
message &&
|
|
84
83
|
message.includes('Eyes-Cypress detected diffs or errors')
|
|
85
84
|
) {
|
|
86
|
-
throw new Error(message)
|
|
85
|
+
throw new Error(message)
|
|
87
86
|
}
|
|
88
|
-
})
|
|
89
|
-
})
|
|
87
|
+
})
|
|
88
|
+
})
|
|
90
89
|
}
|
|
91
90
|
|
|
92
|
-
let isCurrentTestDisabled
|
|
91
|
+
let isCurrentTestDisabled
|
|
93
92
|
|
|
94
|
-
Cypress.Commands.add('eyesOpen', function(args = {}) {
|
|
95
|
-
Cypress.log({name: 'Eyes: open'})
|
|
96
|
-
Cypress.config('eyesOpenArgs', args)
|
|
97
|
-
const {title: testName} = this.currentTest || this.test || Cypress.currentTest
|
|
93
|
+
Cypress.Commands.add('eyesOpen', function (args = {}) {
|
|
94
|
+
Cypress.log({name: 'Eyes: open'})
|
|
95
|
+
Cypress.config('eyesOpenArgs', args)
|
|
96
|
+
const {title: testName} = this.currentTest || this.test || Cypress.currentTest
|
|
98
97
|
|
|
99
98
|
if (Cypress.config('eyesIsDisabled') && args.isDisabled === false) {
|
|
100
99
|
throw new Error(
|
|
101
100
|
`Eyes-Cypress is disabled by an env variable or in the applitools.config.js file, but the "${testName}" test was passed isDisabled:false. A single test cannot be enabled when Eyes.Cypress is disabled through the global configuration. Please remove "isDisabled:false" from cy.eyesOpen() for this test, or enable Eyes.Cypress in the global configuration, either by unsetting the APPLITOOLS_IS_DISABLED env var, or by deleting 'isDisabled' from the applitools.config.js file.`,
|
|
102
|
-
)
|
|
101
|
+
)
|
|
103
102
|
}
|
|
104
|
-
isCurrentTestDisabled = getGlobalConfigProperty('eyesIsDisabled') || args.isDisabled
|
|
105
|
-
if (isCurrentTestDisabled) return
|
|
103
|
+
isCurrentTestDisabled = getGlobalConfigProperty('eyesIsDisabled') || args.isDisabled
|
|
104
|
+
if (isCurrentTestDisabled) return
|
|
106
105
|
|
|
107
106
|
return cy.then({timeout: 86400000}, async () => {
|
|
108
|
-
setRootContext()
|
|
109
|
-
const driver = refer.ref(cy.state('window').document)
|
|
107
|
+
setRootContext()
|
|
108
|
+
const driver = refer.ref(cy.state('window').document)
|
|
110
109
|
|
|
111
110
|
if (!connectedToUniversal) {
|
|
112
|
-
socket.connect(`wss://localhost:${Cypress.config('eyesPort')}/eyes`)
|
|
113
|
-
connectedToUniversal = true
|
|
111
|
+
socket.connect(`wss://localhost:${Cypress.config('eyesPort')}/eyes`)
|
|
112
|
+
connectedToUniversal = true
|
|
114
113
|
socket.emit('Core.makeSDK', {
|
|
115
114
|
name: 'eyes.cypress',
|
|
116
115
|
version: require('../../package.json').version,
|
|
117
116
|
commands: Object.keys(spec).concat(['isSelector', 'isDriver', 'isElement']), // TODO fix spec.isSelector and spec.isDriver and spec.isElement in driver utils
|
|
118
|
-
})
|
|
117
|
+
})
|
|
119
118
|
|
|
120
119
|
manager =
|
|
121
120
|
manager ||
|
|
122
121
|
(await socket.request(
|
|
123
122
|
'Core.makeManager',
|
|
124
|
-
Object.assign(
|
|
125
|
-
|
|
126
|
-
{concurrency: Cypress.config('eyesTestConcurrency')},
|
|
127
|
-
{legacy: false, type: 'vg'},
|
|
128
|
-
),
|
|
129
|
-
));
|
|
123
|
+
Object.assign({}, {concurrency: Cypress.config('eyesTestConcurrency')}, {legacy: false, type: 'vg'}),
|
|
124
|
+
))
|
|
130
125
|
}
|
|
131
126
|
|
|
132
|
-
const appliConfFile = Cypress.config('appliConfFile')
|
|
127
|
+
const appliConfFile = Cypress.config('appliConfFile')
|
|
133
128
|
const config = eyesOpenMapValues({
|
|
134
129
|
args,
|
|
135
130
|
appliConfFile,
|
|
@@ -140,48 +135,48 @@ Cypress.Commands.add('eyesOpen', function(args = {}) {
|
|
|
140
135
|
height: Cypress.config('viewportHeight'),
|
|
141
136
|
name: 'chrome',
|
|
142
137
|
},
|
|
143
|
-
})
|
|
144
|
-
eyes = await socket.request('EyesManager.openEyes', {manager, driver, config})
|
|
145
|
-
})
|
|
146
|
-
})
|
|
138
|
+
})
|
|
139
|
+
eyes = await socket.request('EyesManager.openEyes', {manager, driver, config})
|
|
140
|
+
})
|
|
141
|
+
})
|
|
147
142
|
|
|
148
143
|
Cypress.Commands.add('eyesCheckWindow', (args = {}) =>
|
|
149
144
|
cy.then({timeout: 86400000}, () => {
|
|
150
|
-
if (isCurrentTestDisabled) return
|
|
145
|
+
if (isCurrentTestDisabled) return
|
|
151
146
|
|
|
152
|
-
setRootContext()
|
|
153
|
-
const driver = refer.ref(cy.state('window').document)
|
|
147
|
+
setRootContext()
|
|
148
|
+
const driver = refer.ref(cy.state('window').document)
|
|
154
149
|
|
|
155
|
-
Cypress.log({name: 'Eyes: check window'})
|
|
150
|
+
Cypress.log({name: 'Eyes: check window'})
|
|
156
151
|
|
|
157
|
-
const checkSettings = eyesCheckMapValues({args, refer})
|
|
152
|
+
const checkSettings = eyesCheckMapValues({args, refer})
|
|
158
153
|
|
|
159
154
|
return socket.request('Eyes.check', {
|
|
160
155
|
eyes,
|
|
161
156
|
settings: checkSettings,
|
|
162
157
|
driver,
|
|
163
|
-
})
|
|
158
|
+
})
|
|
164
159
|
}),
|
|
165
|
-
)
|
|
160
|
+
)
|
|
166
161
|
|
|
167
162
|
Cypress.Commands.add('eyesClose', () => {
|
|
168
163
|
return cy.then({timeout: 86400000}, () => {
|
|
169
|
-
if (isCurrentTestDisabled) return
|
|
164
|
+
if (isCurrentTestDisabled) return
|
|
170
165
|
|
|
171
|
-
Cypress.log({name: 'Eyes: close'})
|
|
166
|
+
Cypress.log({name: 'Eyes: close'})
|
|
172
167
|
if (isCurrentTestDisabled) {
|
|
173
|
-
isCurrentTestDisabled = false
|
|
174
|
-
return
|
|
168
|
+
isCurrentTestDisabled = false
|
|
169
|
+
return
|
|
175
170
|
}
|
|
176
171
|
|
|
177
172
|
// intentionally not returning the result in order to not wait on the close promise
|
|
178
173
|
const p = socket.request('Eyes.close', {eyes, throwErr: false}).catch(err => {
|
|
179
|
-
console.log('Error in cy.eyesClose', err)
|
|
180
|
-
})
|
|
181
|
-
closePromiseArr.push(p)
|
|
182
|
-
})
|
|
183
|
-
})
|
|
174
|
+
console.log('Error in cy.eyesClose', err)
|
|
175
|
+
})
|
|
176
|
+
closePromiseArr.push(p)
|
|
177
|
+
})
|
|
178
|
+
})
|
|
184
179
|
|
|
185
180
|
function setRootContext() {
|
|
186
|
-
cy.state('window').document['applitools-marker'] = 'root-context'
|
|
181
|
+
cy.state('window').document['applitools-marker'] = 'root-context'
|
|
187
182
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/* global Node */
|
|
2
2
|
function eyesCheckMapValues({args, refer}) {
|
|
3
3
|
if (typeof args === `string`) {
|
|
4
|
-
args = {tag: args}
|
|
4
|
+
args = {tag: args}
|
|
5
5
|
}
|
|
6
|
-
const config = args
|
|
6
|
+
const config = args // just did it for having less git changes at this moment
|
|
7
7
|
const mappedValues = [
|
|
8
8
|
'tag',
|
|
9
9
|
'scriptHooks',
|
|
@@ -16,10 +16,10 @@ function eyesCheckMapValues({args, refer}) {
|
|
|
16
16
|
'region',
|
|
17
17
|
'selector',
|
|
18
18
|
'element',
|
|
19
|
-
]
|
|
19
|
+
]
|
|
20
20
|
|
|
21
|
-
let regionSettings = {}
|
|
22
|
-
let shadowDomSettings = {}
|
|
21
|
+
let regionSettings = {}
|
|
22
|
+
let shadowDomSettings = {}
|
|
23
23
|
const checkSettings = {
|
|
24
24
|
name: config.tag,
|
|
25
25
|
hooks: config.scriptHooks,
|
|
@@ -29,7 +29,7 @@ function eyesCheckMapValues({args, refer}) {
|
|
|
29
29
|
layoutRegions: convertPaddedRegion(config.layout),
|
|
30
30
|
contentRegions: convertPaddedRegion(config.content),
|
|
31
31
|
accessibilityRegions: convertAccessabilityRegions(config.accessibility),
|
|
32
|
-
}
|
|
32
|
+
}
|
|
33
33
|
|
|
34
34
|
if (config.target === 'region') {
|
|
35
35
|
if (!Array.isArray(config.selector)) {
|
|
@@ -37,12 +37,12 @@ function eyesCheckMapValues({args, refer}) {
|
|
|
37
37
|
if (isHTMLElement(config.element)) {
|
|
38
38
|
regionSettings = {
|
|
39
39
|
region: Object.assign(refer.ref(config.element), {type: 'element'}),
|
|
40
|
-
}
|
|
40
|
+
}
|
|
41
41
|
} else {
|
|
42
42
|
// JQuery element
|
|
43
43
|
regionSettings = {
|
|
44
44
|
region: Object.assign(refer.ref(config.element[0]), {type: 'element'}),
|
|
45
|
-
}
|
|
45
|
+
}
|
|
46
46
|
}
|
|
47
47
|
} else if (
|
|
48
48
|
config.region &&
|
|
@@ -58,114 +58,114 @@ function eyesCheckMapValues({args, refer}) {
|
|
|
58
58
|
width: config.region.width,
|
|
59
59
|
height: config.region.height,
|
|
60
60
|
},
|
|
61
|
-
}
|
|
61
|
+
}
|
|
62
62
|
} else if (!config.hasOwnProperty('selector')) {
|
|
63
63
|
regionSettings = {
|
|
64
64
|
region: config.region,
|
|
65
|
-
}
|
|
65
|
+
}
|
|
66
66
|
} else {
|
|
67
67
|
regionSettings = {
|
|
68
68
|
region: config.selector,
|
|
69
|
-
}
|
|
69
|
+
}
|
|
70
70
|
}
|
|
71
71
|
} else {
|
|
72
|
-
const selectors = config.selector
|
|
72
|
+
const selectors = config.selector
|
|
73
73
|
for (let i = selectors.length - 1; i > -1; i--) {
|
|
74
74
|
if (i === selectors.length - 1) {
|
|
75
|
-
shadowDomSettings['shadow'] = selectors[i].selector
|
|
75
|
+
shadowDomSettings['shadow'] = selectors[i].selector
|
|
76
76
|
} else {
|
|
77
|
-
const prevSettings = Object.assign({}, shadowDomSettings)
|
|
78
|
-
shadowDomSettings['selector'] = selectors[i].selector
|
|
77
|
+
const prevSettings = Object.assign({}, shadowDomSettings)
|
|
78
|
+
shadowDomSettings['selector'] = selectors[i].selector
|
|
79
79
|
if (!prevSettings.hasOwnProperty('selector')) {
|
|
80
|
-
shadowDomSettings['shadow'] = prevSettings.shadow
|
|
80
|
+
shadowDomSettings['shadow'] = prevSettings.shadow
|
|
81
81
|
} else {
|
|
82
|
-
shadowDomSettings['shadow'] = prevSettings
|
|
82
|
+
shadowDomSettings['shadow'] = prevSettings
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
|
-
regionSettings = {region: shadowDomSettings}
|
|
86
|
+
regionSettings = {region: shadowDomSettings}
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
for (const val of mappedValues) {
|
|
91
91
|
if (config.hasOwnProperty(val)) {
|
|
92
|
-
delete config[val]
|
|
92
|
+
delete config[val]
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
-
return Object.assign({}, checkSettings, regionSettings, config)
|
|
96
|
+
return Object.assign({}, checkSettings, regionSettings, config)
|
|
97
97
|
|
|
98
98
|
// #region helper functions
|
|
99
99
|
|
|
100
100
|
function convertPaddedRegion(regions) {
|
|
101
|
-
if (!regions) return
|
|
102
|
-
if (!Array.isArray(regions)) regions = [regions]
|
|
103
|
-
let resRegions = []
|
|
101
|
+
if (!regions) return
|
|
102
|
+
if (!Array.isArray(regions)) regions = [regions]
|
|
103
|
+
let resRegions = []
|
|
104
104
|
for (const region of regions) {
|
|
105
105
|
if (region.element || isHTMLElement(region) || region.jquery) {
|
|
106
106
|
if (region.padding || region.regionId) {
|
|
107
|
-
let currRefElements = refElements(region.element)
|
|
107
|
+
let currRefElements = refElements(region.element)
|
|
108
108
|
for (const refElement of currRefElements) {
|
|
109
|
-
let curr = {region: refElement}
|
|
109
|
+
let curr = {region: refElement}
|
|
110
110
|
if (region.padding) {
|
|
111
|
-
curr.padding = region.padding
|
|
111
|
+
curr.padding = region.padding
|
|
112
112
|
}
|
|
113
113
|
if (region.regionId) {
|
|
114
|
-
curr.regionId = region.regionId
|
|
114
|
+
curr.regionId = region.regionId
|
|
115
115
|
}
|
|
116
|
-
resRegions.push(curr)
|
|
116
|
+
resRegions.push(curr)
|
|
117
117
|
}
|
|
118
118
|
} else {
|
|
119
|
-
resRegions = [...resRegions, ...refElements(region)]
|
|
119
|
+
resRegions = [...resRegions, ...refElements(region)]
|
|
120
120
|
}
|
|
121
121
|
} else {
|
|
122
122
|
if (region.selector && !region.type) {
|
|
123
|
-
region.region = region.selector
|
|
124
|
-
delete region.selector
|
|
123
|
+
region.region = region.selector
|
|
124
|
+
delete region.selector
|
|
125
125
|
}
|
|
126
|
-
resRegions.push(region)
|
|
126
|
+
resRegions.push(region)
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
|
-
return resRegions
|
|
129
|
+
return resRegions
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
function convertAccessabilityRegions(accessibilityRegions) {
|
|
133
|
-
if (!accessibilityRegions) return accessibilityRegions
|
|
134
|
-
const accessibility = []
|
|
133
|
+
if (!accessibilityRegions) return accessibilityRegions
|
|
134
|
+
const accessibility = []
|
|
135
135
|
|
|
136
136
|
accessibilityRegions.map(region => {
|
|
137
137
|
const accessabilityRegion = {
|
|
138
138
|
type: region.accessibilityType,
|
|
139
|
-
}
|
|
139
|
+
}
|
|
140
140
|
if (region.hasOwnProperty('selector')) {
|
|
141
|
-
accessabilityRegion.region = region.selector
|
|
142
|
-
accessibility.push(accessabilityRegion)
|
|
141
|
+
accessabilityRegion.region = region.selector
|
|
142
|
+
accessibility.push(accessabilityRegion)
|
|
143
143
|
} else if (region.hasOwnProperty('element')) {
|
|
144
|
-
const elements = refElements(region.element)
|
|
144
|
+
const elements = refElements(region.element)
|
|
145
145
|
for (const element of elements) {
|
|
146
|
-
accessibility.push(Object.assign({}, accessabilityRegion, {region: element}))
|
|
146
|
+
accessibility.push(Object.assign({}, accessabilityRegion, {region: element}))
|
|
147
147
|
}
|
|
148
148
|
} else if (region.hasOwnProperty('region')) {
|
|
149
|
-
region.type = region.region.accessibilityType
|
|
150
|
-
delete region.region.accessibilityType
|
|
151
|
-
accessibility.push(region)
|
|
149
|
+
region.type = region.region.accessibilityType
|
|
150
|
+
delete region.region.accessibilityType
|
|
151
|
+
accessibility.push(region)
|
|
152
152
|
} else {
|
|
153
153
|
accessabilityRegion.region = {
|
|
154
154
|
y: region.top,
|
|
155
155
|
x: region.left,
|
|
156
156
|
width: region.width,
|
|
157
157
|
height: region.height,
|
|
158
|
-
}
|
|
159
|
-
accessibility.push(accessabilityRegion)
|
|
158
|
+
}
|
|
159
|
+
accessibility.push(accessabilityRegion)
|
|
160
160
|
}
|
|
161
|
-
})
|
|
161
|
+
})
|
|
162
162
|
|
|
163
|
-
return accessibility
|
|
163
|
+
return accessibility
|
|
164
164
|
}
|
|
165
165
|
|
|
166
166
|
function convertFloatingRegion(floatingRegions) {
|
|
167
|
-
if (!floatingRegions) return floatingRegions
|
|
168
|
-
const floating = []
|
|
167
|
+
if (!floatingRegions) return floatingRegions
|
|
168
|
+
const floating = []
|
|
169
169
|
|
|
170
170
|
for (const region of floatingRegions) {
|
|
171
171
|
const floatingRegion = {
|
|
@@ -173,49 +173,47 @@ function eyesCheckMapValues({args, refer}) {
|
|
|
173
173
|
maxLeftOffset: region.maxLeftOffset || 0,
|
|
174
174
|
maxUpOffset: region.maxUpOffset || 0,
|
|
175
175
|
maxRightOffset: region.maxRightOffset || 0,
|
|
176
|
-
}
|
|
176
|
+
}
|
|
177
177
|
if (region.hasOwnProperty('selector')) {
|
|
178
|
-
floatingRegion.region = region.selector
|
|
179
|
-
floating.push(floatingRegion)
|
|
178
|
+
floatingRegion.region = region.selector
|
|
179
|
+
floating.push(floatingRegion)
|
|
180
180
|
} else if (region.hasOwnProperty('element')) {
|
|
181
|
-
const elements = refElements(region.element)
|
|
181
|
+
const elements = refElements(region.element)
|
|
182
182
|
for (const element of elements) {
|
|
183
|
-
floating.push(Object.assign({}, floatingRegion, {region: element}))
|
|
183
|
+
floating.push(Object.assign({}, floatingRegion, {region: element}))
|
|
184
184
|
}
|
|
185
185
|
} else if (region.hasOwnProperty('region')) {
|
|
186
|
-
floating.push(region)
|
|
186
|
+
floating.push(region)
|
|
187
187
|
} else {
|
|
188
188
|
floatingRegion.region = {
|
|
189
189
|
y: region.top,
|
|
190
190
|
x: region.left,
|
|
191
191
|
width: region.width,
|
|
192
192
|
height: region.height,
|
|
193
|
-
}
|
|
194
|
-
floating.push(floatingRegion)
|
|
193
|
+
}
|
|
194
|
+
floating.push(floatingRegion)
|
|
195
195
|
}
|
|
196
196
|
}
|
|
197
|
-
return floating
|
|
197
|
+
return floating
|
|
198
198
|
}
|
|
199
199
|
|
|
200
200
|
function refElements(regions) {
|
|
201
|
-
if (!regions) return regions
|
|
202
|
-
if (!Array.isArray(regions)) regions = [regions]
|
|
203
|
-
const elements = []
|
|
201
|
+
if (!regions) return regions
|
|
202
|
+
if (!Array.isArray(regions)) regions = [regions]
|
|
203
|
+
const elements = []
|
|
204
204
|
for (const region of regions) {
|
|
205
205
|
if (isHTMLElement(region)) {
|
|
206
|
-
elements.push(Object.assign(refer.ref(region), {type: 'element'}))
|
|
206
|
+
elements.push(Object.assign(refer.ref(region), {type: 'element'}))
|
|
207
207
|
} else if (region.jquery) {
|
|
208
|
-
region.each(function() {
|
|
208
|
+
region.each(function () {
|
|
209
209
|
// there's a small chance that `this` is not an HTML element. So we just verify it.
|
|
210
|
-
elements.push(
|
|
211
|
-
|
|
212
|
-
);
|
|
213
|
-
});
|
|
210
|
+
elements.push(isHTMLElement(this) ? Object.assign(refer.ref(this), {type: 'element'}) : this)
|
|
211
|
+
})
|
|
214
212
|
} else {
|
|
215
|
-
elements.push(region)
|
|
213
|
+
elements.push(region)
|
|
216
214
|
}
|
|
217
215
|
}
|
|
218
|
-
return elements
|
|
216
|
+
return elements
|
|
219
217
|
}
|
|
220
218
|
|
|
221
219
|
// #endregion
|
|
@@ -224,7 +222,7 @@ function eyesCheckMapValues({args, refer}) {
|
|
|
224
222
|
function isHTMLElement(element) {
|
|
225
223
|
// Avoiding instanceof here since the element might come from an iframe, and `instanceof HTMLElement` would fail.
|
|
226
224
|
// This check looks naive, but if anyone passes something like {nodeType: 1} as a region, then I'm fine with them crashing :)
|
|
227
|
-
return element.nodeType && element.nodeType === Node.ELEMENT_NODE
|
|
225
|
+
return element.nodeType && element.nodeType === Node.ELEMENT_NODE
|
|
228
226
|
}
|
|
229
227
|
|
|
230
|
-
module.exports = {eyesCheckMapValues}
|
|
228
|
+
module.exports = {eyesCheckMapValues}
|