mirror of
https://github.com/datashard/snapshot.git
synced 2025-05-16 12:17:21 +00:00
50 lines
1.1 KiB
JavaScript
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
|
|
}
|