mirror of https://github.com/sveltejs/svelte
parent
abd55510be
commit
bd42d64da4
@ -0,0 +1,3 @@
|
||||
<div>
|
||||
<iframe title="test"></iframe>
|
||||
</div>
|
@ -0,0 +1,3 @@
|
||||
<div>
|
||||
<iframe title="test"></iframe>
|
||||
</div>
|
@ -0,0 +1,65 @@
|
||||
export default {
|
||||
props: {
|
||||
done: false,
|
||||
},
|
||||
|
||||
snapshot(target) {
|
||||
let domMutated;
|
||||
const mutationRecords = [];
|
||||
const mutationObserver = new global.window.MutationObserver(records => {
|
||||
Array.from(
|
||||
records
|
||||
).forEach(
|
||||
({ type, childList, target, attributes, addedNodes, removedNodes }) => {
|
||||
childList = Array.from(childList|| []).map(n => n.nodeName);
|
||||
addedNodes = Array.from(addedNodes|| []).map(n => n.nodeName);
|
||||
removedNodes = Array.from(removedNodes|| []).map(n => n.nodeName);
|
||||
mutationRecords.push({
|
||||
type,
|
||||
childList,
|
||||
target,
|
||||
attributes,
|
||||
addedNodes,
|
||||
removedNodes,
|
||||
});
|
||||
});
|
||||
domMutated && domMutated(mutationRecords);
|
||||
});
|
||||
mutationObserver.observe(target, { childList: true, subtree: true });
|
||||
mutationRecords.length = 0;
|
||||
const trigger = new Promise(resolve => (domMutated = resolve));
|
||||
|
||||
return {
|
||||
mutationRecords,
|
||||
mutationObserver,
|
||||
trigger,
|
||||
};
|
||||
},
|
||||
|
||||
async test(assert, target, snapshot, component, window) {
|
||||
component.$set({done:true});
|
||||
|
||||
await snapshot.trigger;
|
||||
snapshot.mutationObserver.disconnect();
|
||||
|
||||
console.log(snapshot.mutationRecords);
|
||||
|
||||
const iframeMutations = snapshot.mutationRecords.filter(({addedNodes, removedNodes}) => {
|
||||
console.log({addedNodes, removedNodes});
|
||||
return addedNodes.includes('IFRAME')|| removedNodes.includes('IFRAME');
|
||||
});
|
||||
console.log({iframeMutations});
|
||||
assert(iframeMutations.length === 0, 'iframe added/removed');
|
||||
// assert(false, 'test')
|
||||
|
||||
assert.htmlEqual(
|
||||
target.innerHTML,
|
||||
`
|
||||
<div>
|
||||
<iframe title="test"></iframe>
|
||||
<span>done</span>
|
||||
</div>
|
||||
`
|
||||
);
|
||||
},
|
||||
};
|
@ -0,0 +1,8 @@
|
||||
<script>
|
||||
export let done;
|
||||
</script>
|
||||
|
||||
<div>
|
||||
<iframe title="test"></iframe>
|
||||
{#if done}<span>done</span>{/if}
|
||||
</div>
|
Loading…
Reference in new issue