1
0
Fork 0
mirror of https://github.com/datashard/snapshot.git synced 2025-05-16 12:17:21 +00:00
snapshot/src/utils.js
2017-12-10 13:53:49 -05:00

50 lines
1.1 KiB
JavaScript

/* global Cypress */
const sd = require('@wildpeaks/snapshot-dom')
function isJqueryElement (x) {
return 'wrap' in x
}
// converts DOM element to a JSON object
function serializeDomElement ($el) {
// console.log('snapshot value!', $el)
const json = sd.toJSON($el.context)
// remove React id, too transient
delete json.attributes['data-reactid']
// console.log('as json', json)
// hmm, why is value not serialized?
if ($el.context.value && !json.attributes.value) {
json.attributes.value = $el.context.value
}
return json
}
const stripReactIdAttributes = html => {
const dataReactId = /data\-reactid="[\.\d\$\-abcdfef]+"/g
return html.replace(dataReactId, '')
}
const serializeReactToHTML = el$ => {
debugger
const html = el$[0].outerHTML
const stripped = stripReactIdAttributes(html)
return stripped
}
const identity = x => x
const publicProps = name => !name.startsWith('__')
const countSnapshots = snapshots =>
Object.keys(snapshots).filter(publicProps).length
module.exports = {
SNAPSHOT_FILE_NAME: 'snapshots.js',
serializeDomElement,
serializeReactToHTML,
identity,
countSnapshots,
isJqueryElement
}