mirror of https://github.com/sveltejs/svelte
parent
8f8a5b10df
commit
6bf6c748ee
@ -0,0 +1,45 @@
|
||||
import { flushSync } from 'svelte';
|
||||
import { test } from '../../test';
|
||||
|
||||
export default test({
|
||||
compileOptions: {
|
||||
dev: true
|
||||
},
|
||||
async test({ assert, warnings }) {
|
||||
assert.include(warnings[0], "Duplicate attribute 'foo' across multiple `<svelte:html>` blocks");
|
||||
assert.deepEqual(document.documentElement.getAttribute('foo'), 'bar');
|
||||
assert.deepEqual(document.documentElement.getAttribute('class'), 'foo bar foo baz');
|
||||
|
||||
const [btn1, btn2] = document.querySelectorAll('button');
|
||||
|
||||
btn1.click();
|
||||
flushSync();
|
||||
assert.deepEqual(document.documentElement.getAttribute('foo'), 'foo');
|
||||
assert.deepEqual(document.documentElement.getAttribute('class'), 'foo bar');
|
||||
|
||||
btn1.click();
|
||||
flushSync();
|
||||
assert.deepEqual(document.documentElement.getAttribute('foo'), 'bar');
|
||||
assert.deepEqual(document.documentElement.getAttribute('class'), 'foo bar foo baz');
|
||||
|
||||
btn2.click();
|
||||
flushSync();
|
||||
assert.deepEqual(document.documentElement.getAttribute('foo'), 'top0');
|
||||
|
||||
btn1.click();
|
||||
flushSync();
|
||||
assert.deepEqual(document.documentElement.getAttribute('foo'), 'top0');
|
||||
|
||||
btn1.click();
|
||||
flushSync();
|
||||
assert.deepEqual(document.documentElement.getAttribute('foo'), 'bar');
|
||||
|
||||
document.querySelectorAll('button')[2].click();
|
||||
flushSync();
|
||||
assert.deepEqual(document.documentElement.getAttribute('foo'), 'nested0');
|
||||
|
||||
btn1.click();
|
||||
flushSync();
|
||||
assert.deepEqual(document.documentElement.getAttribute('foo'), 'top0');
|
||||
}
|
||||
});
|
@ -0,0 +1,7 @@
|
||||
<script>
|
||||
let foo = $state('bar');
|
||||
let i = 0;
|
||||
</script>
|
||||
|
||||
<button onclick={() => foo = 'nested'+i++}>change nested</button>
|
||||
<svelte:html {foo} class="foo baz"></svelte:html>
|
@ -0,0 +1,15 @@
|
||||
<script>
|
||||
import Child from './child.svelte';
|
||||
let foo = $state('foo');
|
||||
let show = $state(true);
|
||||
let i = 0;
|
||||
</script>
|
||||
|
||||
<button onclick={() => show = !show}>toggle</button>
|
||||
<button onclick={() => foo = 'top'+i++}>change top</button>
|
||||
|
||||
<svelte:html {foo} class="foo bar"></svelte:html>
|
||||
|
||||
{#if show}
|
||||
<Child />
|
||||
{/if}
|
Loading…
Reference in new issue