chore: cleanup more tests (#11738)

remove awaits in favor of flushSync
pull/11741/head
Dominic Gannaway 1 year ago committed by GitHub
parent d4718e0755
commit 44115840bd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { assert_ok, test } from '../../test'; import { assert_ok, test } from '../../test';
export default test({ export default test({
@ -12,11 +13,12 @@ export default test({
}; };
}, },
async test(assert, target, _, component, window) { test(assert, target, _, component, window) {
const input = target.querySelector('input'); const input = target.querySelector('input');
assert_ok(input); assert_ok(input);
input.value = 'everybody'; input.value = 'everybody';
await input.dispatchEvent(new window.Event('input')); input.dispatchEvent(new window.Event('input'));
flushSync();
assert.equal(component.name, 'everybody'); assert.equal(component.name, 'everybody');
assert.htmlEqual( assert.htmlEqual(

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { assert_ok, test } from '../../test'; import { assert_ok, test } from '../../test';
export default test({ export default test({
@ -16,7 +17,8 @@ export default test({
async test(assert, target, _, component, window) { async test(assert, target, _, component, window) {
const button = target.querySelector('button'); const button = target.querySelector('button');
assert_ok(button); assert_ok(button);
await button.dispatchEvent(new window.MouseEvent('click', { bubbles: true })); button.dispatchEvent(new window.MouseEvent('click', { bubbles: true }));
flushSync();
assert.ok(component.clicked); assert.ok(component.clicked);
assert.htmlEqual( assert.htmlEqual(

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../assert'; import { test } from '../../assert';
const tick = () => Promise.resolve(); const tick = () => Promise.resolve();
@ -18,7 +19,8 @@ export default test({
assert.equal(p.innerHTML, 'Context works'); assert.equal(p.innerHTML, 'Context works');
assert.equal(getComputedStyle(button).color, 'rgb(255, 0, 0)'); assert.equal(getComputedStyle(button).color, 'rgb(255, 0, 0)');
await button.dispatchEvent(new MouseEvent('click', { bubbles: true })); button.dispatchEvent(new MouseEvent('click', { bubbles: true }));
flushSync();
assert.equal(el.counter.count, 1); assert.equal(el.counter.count, 1);
assert.equal(button.innerHTML, 'count: 1'); assert.equal(button.innerHTML, 'count: 1');

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../assert'; import { test } from '../../assert';
const tick = () => Promise.resolve(); const tick = () => Promise.resolve();
@ -6,15 +7,18 @@ export default test({
const element = document.createElement('custom-element'); const element = document.createElement('custom-element');
target.appendChild(element); target.appendChild(element);
await tick(); await tick();
flushSync();
/** @type {any} */ /** @type {any} */
const el = target.querySelector('custom-element'); const el = target.querySelector('custom-element');
el.shadowRoot.querySelector('button').click(); el.shadowRoot.querySelector('button').click();
await tick(); await tick();
flushSync();
assert.equal(el.getAttribute('aria-expanded'), ''); assert.equal(el.getAttribute('aria-expanded'), '');
el.shadowRoot.querySelector('button').click(); el.shadowRoot.querySelector('button').click();
await tick(); await tick();
flushSync();
assert.equal(el.getAttribute('aria-expanded'), null); assert.equal(el.getAttribute('aria-expanded'), null);
} }

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../assert'; import { test } from '../../assert';
const tick = () => Promise.resolve(); const tick = () => Promise.resolve();
@ -23,6 +24,7 @@ export default test({
assert.equal(getComputedStyle(inner_p).color, 'rgb(255, 255, 255)'); assert.equal(getComputedStyle(inner_p).color, 'rgb(255, 255, 255)');
button.click(); button.click();
flushSync();
await tick(); await tick();
await tick(); await tick();

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -5,7 +6,7 @@ export default test({
<button>action</button> <button>action</button>
`, `,
async test({ assert, target, window }) { test({ assert, target, window }) {
const button = target.querySelector('button'); const button = target.querySelector('button');
ok(button); ok(button);
@ -13,7 +14,8 @@ export default test({
const leave = new window.MouseEvent('mouseleave'); const leave = new window.MouseEvent('mouseleave');
const ctrlPress = new window.KeyboardEvent('keydown', { ctrlKey: true }); const ctrlPress = new window.KeyboardEvent('keydown', { ctrlKey: true });
await button.dispatchEvent(enter); button.dispatchEvent(enter);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
` `
@ -22,7 +24,8 @@ export default test({
` `
); );
await window.dispatchEvent(ctrlPress); window.dispatchEvent(ctrlPress);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
` `
@ -31,7 +34,8 @@ export default test({
` `
); );
await button.dispatchEvent(leave); button.dispatchEvent(leave);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
` `

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
/** @type {string[]} */ /** @type {string[]} */
@ -9,14 +10,15 @@ export default test({
return { value }; return { value };
}, },
async test({ assert, target, window }) { test({ assert, target, window }) {
const inputs = target.querySelectorAll('input'); const inputs = target.querySelectorAll('input');
const event = new window.Event('input'); const event = new window.Event('input', { bubbles: true });
for (const input of inputs) { for (const input of inputs) {
input.value = 'h'; input.value = 'h';
await input.dispatchEvent(event); input.dispatchEvent(event);
flushSync();
} }
// Svelte 5 breaking change, use:action now fires // Svelte 5 breaking change, use:action now fires

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -15,13 +16,14 @@ export default test({
<p></p> <p></p>
`, `,
async test({ assert, target, window }) { test({ assert, target, window }) {
const input = target.querySelector('input'); const input = target.querySelector('input');
ok(input); ok(input);
const event = new window.Event('input'); const event = new window.Event('input');
input.value = 'h'; input.value = 'h';
await input.dispatchEvent(event); input.dispatchEvent(event);
flushSync();
assert.equal(input.value, 'H'); assert.equal(input.value, 'H');
assert.htmlEqual( assert.htmlEqual(
@ -33,7 +35,8 @@ export default test({
); );
input.value = 'he'; input.value = 'he';
await input.dispatchEvent(event); input.dispatchEvent(event);
flushSync();
assert.equal(input.value, 'HE'); assert.equal(input.value, 'HE');
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -17,8 +18,8 @@ export default test({
const change = new window.Event('change'); const change = new window.Event('change');
options[1].selected = true; options[1].selected = true;
await select.dispatchEvent(change); select.dispatchEvent(change);
await Promise.resolve(); flushSync();
assert.equal(span.textContent, 'b'); assert.equal(span.textContent, 'b');
} }

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -13,7 +14,7 @@ export default test({
</select> </select>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const select = target.querySelector('select'); const select = target.querySelector('select');
ok(select); ok(select);
const options = target.querySelectorAll('option'); const options = target.querySelectorAll('option');
@ -21,7 +22,8 @@ export default test({
const change = new window.Event('change'); const change = new window.Event('change');
options[1].selected = true; options[1].selected = true;
await select.dispatchEvent(change); select.dispatchEvent(change);
flushSync();
assert.equal(component.selected.letter, 'B'); assert.equal(component.selected.letter, 'B');
assert.htmlEqual( assert.htmlEqual(

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -25,17 +26,17 @@ export default test({
</div> </div>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const inputs = [...target.querySelectorAll('input')]; const inputs = [...target.querySelectorAll('input')];
const event = new window.Event('change'); const event = new window.Event('change');
inputs[1].checked = true; inputs[1].checked = true;
await inputs[1].dispatchEvent(event); inputs[1].dispatchEvent(event);
flushSync();
await component.clear(); component.clear();
flushSync();
await Promise.resolve();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -46,9 +47,10 @@ export default test({
); );
inputs[2].checked = true; inputs[2].checked = true;
await inputs[2].dispatchEvent(event); inputs[2].dispatchEvent(event);
flushSync();
await component.clear(); component.clear();
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -37,7 +38,7 @@ export default test({
<p>1 completed</p> <p>1 completed</p>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const inputs = [...target.querySelectorAll('input')]; const inputs = [...target.querySelectorAll('input')];
assert.ok(inputs[0].checked); assert.ok(inputs[0].checked);
@ -47,9 +48,8 @@ export default test({
const event = new window.Event('change'); const event = new window.Event('change');
inputs[1].checked = true; inputs[1].checked = true;
await inputs[1].dispatchEvent(event); inputs[1].dispatchEvent(event);
// Wait for the DOM to update flushSync();
await Promise.resolve();
assert.equal(component.numCompleted, 2); assert.equal(component.numCompleted, 2);
assert.htmlEqual( assert.htmlEqual(

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
const values = [{ name: 'Alpha' }, { name: 'Beta' }, { name: 'Gamma' }]; const values = [{ name: 'Alpha' }, { name: 'Beta' }, { name: 'Gamma' }];
@ -37,7 +38,7 @@ export default test({
<p>Beta</p>`, <p>Beta</p>`,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const inputs = target.querySelectorAll('input'); const inputs = target.querySelectorAll('input');
assert.equal(inputs[0].checked, false); assert.equal(inputs[0].checked, false);
assert.equal(inputs[1].checked, true); assert.equal(inputs[1].checked, true);
@ -46,7 +47,8 @@ export default test({
const event = new window.Event('change'); const event = new window.Event('change');
inputs[0].checked = true; inputs[0].checked = true;
await inputs[0].dispatchEvent(event); inputs[0].dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
const values = [{ name: 'Alpha' }, { name: 'Beta' }, { name: 'Gamma' }]; const values = [{ name: 'Alpha' }, { name: 'Beta' }, { name: 'Gamma' }];
@ -37,7 +38,7 @@ export default test({
<p>Beta</p>`, <p>Beta</p>`,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
let inputs = target.querySelectorAll('input'); let inputs = target.querySelectorAll('input');
assert.equal(inputs[0].checked, false); assert.equal(inputs[0].checked, false);
assert.equal(inputs[1].checked, true); assert.equal(inputs[1].checked, true);
@ -46,7 +47,8 @@ export default test({
const event = new window.Event('change'); const event = new window.Event('change');
inputs[0].checked = true; inputs[0].checked = true;
await inputs[0].dispatchEvent(event); inputs[0].dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -15,7 +16,7 @@ export default test({
<p>true</p> <p>true</p>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const input = target.querySelector('input'); const input = target.querySelector('input');
ok(input); ok(input);
@ -24,7 +25,8 @@ export default test({
const event = new window.Event('change'); const event = new window.Event('change');
input.checked = false; input.checked = false;
await input.dispatchEvent(event); input.dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -19,7 +20,7 @@ export default test({
<input type='checkbox' value='d'>d<br> <input type='checkbox' value='d'>d<br>
`, `,
async test({ assert, target, window }) { test({ assert, target, window }) {
const inputs = target.querySelectorAll('input'); const inputs = target.querySelectorAll('input');
const p = target.querySelector('p'); const p = target.querySelector('p');
ok(p); ok(p);
@ -37,7 +38,8 @@ export default test({
const event = new window.Event('change'); const event = new window.Event('change');
inputs[0].checked = true; inputs[0].checked = true;
await inputs[0].dispatchEvent(event); inputs[0].dispatchEvent(event);
flushSync();
assert.htmlEqual(p.innerHTML, 'Checked: a'); assert.htmlEqual(p.innerHTML, 'Checked: a');
@ -52,7 +54,8 @@ export default test({
assert.equal(inputs[7].checked, false); assert.equal(inputs[7].checked, false);
inputs[3].checked = true; inputs[3].checked = true;
await inputs[3].dispatchEvent(event); inputs[3].dispatchEvent(event);
flushSync();
assert.htmlEqual(p.innerHTML, 'Checked: a,d'); assert.htmlEqual(p.innerHTML, 'Checked: a,d');
@ -67,7 +70,8 @@ export default test({
assert.equal(inputs[7].checked, true); assert.equal(inputs[7].checked, true);
inputs[4].checked = false; inputs[4].checked = false;
await inputs[4].dispatchEvent(event); inputs[4].dispatchEvent(event);
flushSync();
assert.htmlEqual(p.innerHTML, 'Checked: d'); assert.htmlEqual(p.innerHTML, 'Checked: d');

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
/** @type {Array<{ name: string }>} */ /** @type {Array<{ name: string }>} */
@ -112,7 +113,7 @@ export default test({
</div> </div>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const inputs = target.querySelectorAll('input'); const inputs = target.querySelectorAll('input');
assert.equal(inputs[0].checked, false); assert.equal(inputs[0].checked, false);
assert.equal(inputs[1].checked, true); assert.equal(inputs[1].checked, true);
@ -127,8 +128,8 @@ export default test({
const event = new window.Event('change'); const event = new window.Event('change');
inputs[0].checked = true; inputs[0].checked = true;
await inputs[0].dispatchEvent(event); inputs[0].dispatchEvent(event);
await Promise.resolve(); flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -181,8 +182,8 @@ export default test({
` `
); );
inputs[3].checked = true; inputs[3].checked = true;
await inputs[3].dispatchEvent(event); inputs[3].dispatchEvent(event);
await Promise.resolve(); flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -236,8 +237,8 @@ export default test({
); );
inputs[8].checked = false; inputs[8].checked = false;
await inputs[8].dispatchEvent(event); inputs[8].dispatchEvent(event);
await Promise.resolve(); flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,16 +1,19 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
// https://github.com/sveltejs/svelte/issues/7633 // https://github.com/sveltejs/svelte/issues/7633
export default test({ export default test({
async test({ assert, target, component }) { test({ assert, target, component }) {
let inputs = target.querySelectorAll('input'); let inputs = target.querySelectorAll('input');
assert.equal(inputs[0].checked, true); assert.equal(inputs[0].checked, true);
assert.equal(inputs[1].checked, false); assert.equal(inputs[1].checked, false);
assert.equal(inputs[2].checked, false); assert.equal(inputs[2].checked, false);
await component.moveDown(0); component.moveDown(0);
await component.moveDown(1); flushSync();
component.moveDown(1);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,8 +1,9 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
// https://github.com/sveltejs/svelte/issues/6112 // https://github.com/sveltejs/svelte/issues/6112
export default test({ export default test({
async test({ assert, target, component, window }) { test({ assert, target, component, window }) {
let inputs = target.querySelectorAll('input'); let inputs = target.querySelectorAll('input');
/** @param {Set<number>} set */ /** @param {Set<number>} set */
@ -45,8 +46,8 @@ export default test({
// dom to value // dom to value
inputs[3].checked = true; inputs[3].checked = true;
await inputs[3].dispatchEvent(event); inputs[3].dispatchEvent(event);
await Promise.resolve(); flushSync();
check(new Set([0, 3, 5, 6])); check(new Set([0, 3, 5, 6]));
assert.equal(component.pipelineOperations[1].operation.args[1].value, 'd'); assert.equal(component.pipelineOperations[1].operation.args[1].value, 'd');
@ -84,8 +85,8 @@ export default test({
check(new Set([0, 3, 5, 6])); check(new Set([0, 3, 5, 6]));
inputs[2].checked = true; inputs[2].checked = true;
await inputs[2].dispatchEvent(event); inputs[2].dispatchEvent(event);
await Promise.resolve(); flushSync();
check(new Set([0, 2, 5, 6])); check(new Set([0, 2, 5, 6]));
} }

@ -1,8 +1,9 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
// https://github.com/sveltejs/svelte/issues/6112 // https://github.com/sveltejs/svelte/issues/6112
export default test({ export default test({
async test({ assert, target, component, window }) { test({ assert, target, component, window }) {
let inputs = target.querySelectorAll('input'); let inputs = target.querySelectorAll('input');
/** @param {Set<number>} set */ /** @param {Set<number>} set */
@ -45,7 +46,8 @@ export default test({
// dom to value // dom to value
inputs[3].checked = true; inputs[3].checked = true;
await inputs[3].dispatchEvent(event); inputs[3].dispatchEvent(event);
flushSync();
check(new Set([0, 2, 3])); check(new Set([0, 2, 3]));
assert.deepEqual(component.pipelineOperations[1].operation.args[1].value, ['c', 'd']); assert.deepEqual(component.pipelineOperations[1].operation.args[1].value, ['c', 'd']);
@ -83,7 +85,8 @@ export default test({
check(new Set([0, 2, 3])); check(new Set([0, 2, 3]));
inputs[5].checked = true; inputs[5].checked = true;
await inputs[5].dispatchEvent(event); inputs[5].dispatchEvent(event);
flushSync();
check(new Set([0, 2, 3, 5])); check(new Set([0, 2, 3, 5]));
assert.deepEqual(component.pipelineOperations[1].operation.args[0].value, ['b']); assert.deepEqual(component.pipelineOperations[1].operation.args[0].value, ['b']);

@ -1,7 +1,8 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
async test({ assert, target, window }) { test({ assert, target, window }) {
const [input1, input2] = /** @type {NodeListOf<HTMLInputElement>} */ ( const [input1, input2] = /** @type {NodeListOf<HTMLInputElement>} */ (
target.querySelectorAll('input[type=text]') target.querySelectorAll('input[type=text]')
); );
@ -12,26 +13,28 @@ export default test({
const event = new window.Event('input'); const event = new window.Event('input');
input1.value = 'world'; input1.value = 'world';
await input1.dispatchEvent(event); input1.dispatchEvent(event);
await Promise.resolve(); flushSync();
assert.equal(radio.checked, true); assert.equal(radio.checked, true);
input2.value = 'foo'; input2.value = 'foo';
await input2.dispatchEvent(event); input2.dispatchEvent(event);
await Promise.resolve(); flushSync();
assert.equal(radio.checked, false); assert.equal(radio.checked, false);
input1.value = 'foo'; input1.value = 'foo';
await input1.dispatchEvent(event); input1.dispatchEvent(event);
flushSync();
assert.equal(radio.checked, true); assert.equal(radio.checked, true);
input1.value = 'bar'; input1.value = 'bar';
await input1.dispatchEvent(event); input1.dispatchEvent(event);
flushSync();
assert.equal(radio.checked, false); assert.equal(radio.checked, false);
input2.value = 'bar'; input2.value = 'bar';
await input2.dispatchEvent(event); input2.dispatchEvent(event);
await Promise.resolve(); flushSync();
assert.equal(radio.checked, true); assert.equal(radio.checked, true);
} }
}); });

@ -1,39 +1,40 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
async test({ assert, target, window }) { test({ assert, target, window }) {
const [input1, input2, input3, input4] = target.querySelectorAll('input'); const [input1, input2, input3, input4] = target.querySelectorAll('input');
const [p] = target.querySelectorAll('p'); const [p] = target.querySelectorAll('p');
const event = new window.Event('change'); const event = new window.Event('change');
input1.checked = true; input1.checked = true;
await input1.dispatchEvent(event); input1.dispatchEvent(event);
await Promise.resolve(); flushSync();
assert.htmlEqual(p.innerHTML, '["1a"]'); assert.htmlEqual(p.innerHTML, '["1a"]');
input2.checked = true; input2.checked = true;
await input1.dispatchEvent(event); input1.dispatchEvent(event);
await Promise.resolve(); flushSync();
assert.htmlEqual(p.innerHTML, '["1a","1b"]'); assert.htmlEqual(p.innerHTML, '["1a","1b"]');
input3.checked = true; input3.checked = true;
await input1.dispatchEvent(event); input1.dispatchEvent(event);
await Promise.resolve(); flushSync();
assert.htmlEqual(p.innerHTML, '["1a","1b","2a"]'); assert.htmlEqual(p.innerHTML, '["1a","1b","2a"]');
input4.checked = true; input4.checked = true;
await input1.dispatchEvent(event); input1.dispatchEvent(event);
await Promise.resolve(); flushSync();
assert.htmlEqual(p.innerHTML, '["1a","1b","2a","2b"]'); assert.htmlEqual(p.innerHTML, '["1a","1b","2a","2b"]');
input1.checked = false; input1.checked = false;
await input1.dispatchEvent(event); input1.dispatchEvent(event);
await Promise.resolve(); flushSync();
assert.htmlEqual(p.innerHTML, '["1b","2a","2b"]'); assert.htmlEqual(p.innerHTML, '["1b","2a","2b"]');
input3.checked = false; input3.checked = false;
await input1.dispatchEvent(event); input1.dispatchEvent(event);
await Promise.resolve(); flushSync();
assert.htmlEqual(p.innerHTML, '["1b","2b"]'); assert.htmlEqual(p.innerHTML, '["1b","2b"]');
} }
}); });

@ -1,7 +1,8 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
async test({ assert, target }) { test({ assert, target }) {
const checkboxes = /** @type {NodeListOf<HTMLInputElement>} */ ( const checkboxes = /** @type {NodeListOf<HTMLInputElement>} */ (
target.querySelectorAll('input[type="checkbox"]') target.querySelectorAll('input[type="checkbox"]')
); );
@ -10,12 +11,14 @@ export default test({
assert.isTrue(checkboxes[1].checked); assert.isTrue(checkboxes[1].checked);
assert.isFalse(checkboxes[2].checked); assert.isFalse(checkboxes[2].checked);
await checkboxes[1].click(); checkboxes[1].click();
flushSync();
const noChecked = target.querySelector('#output')?.innerHTML; const noChecked = target.querySelector('#output')?.innerHTML;
assert.equal(noChecked, ''); assert.equal(noChecked, '');
await checkboxes[1].click(); checkboxes[1].click();
flushSync();
const oneChecked = target.querySelector('#output')?.innerHTML; const oneChecked = target.querySelector('#output')?.innerHTML;
assert.equal(oneChecked, 'Mint choc chip'); assert.equal(oneChecked, 'Mint choc chip');

@ -1,7 +1,8 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
async test({ assert, target }) { test({ assert, target }) {
const checkboxes = /** @type {NodeListOf<HTMLInputElement>} */ ( const checkboxes = /** @type {NodeListOf<HTMLInputElement>} */ (
target.querySelectorAll('input[type="checkbox"]') target.querySelectorAll('input[type="checkbox"]')
); );
@ -10,12 +11,14 @@ export default test({
assert.isTrue(checkboxes[1].checked); assert.isTrue(checkboxes[1].checked);
assert.isFalse(checkboxes[2].checked); assert.isFalse(checkboxes[2].checked);
await checkboxes[1].click(); checkboxes[1].click();
flushSync();
const noChecked = target.querySelector('#output')?.innerHTML; const noChecked = target.querySelector('#output')?.innerHTML;
assert.equal(noChecked, ''); assert.equal(noChecked, '');
await checkboxes[1].click(); checkboxes[1].click();
flushSync();
const oneChecked = target.querySelector('#output')?.innerHTML; const oneChecked = target.querySelector('#output')?.innerHTML;
assert.equal(oneChecked, 'Mint choc chip'); assert.equal(oneChecked, 'Mint choc chip');

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -27,7 +28,7 @@ export default test({
<p>1, 2, 3</p>`, <p>1, 2, 3</p>`,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const inputs = target.querySelectorAll('input'); const inputs = target.querySelectorAll('input');
assert.equal(inputs[0].checked, true); assert.equal(inputs[0].checked, true);
assert.equal(inputs[1].checked, true); assert.equal(inputs[1].checked, true);
@ -36,7 +37,8 @@ export default test({
const event = new window.Event('change'); const event = new window.Event('change');
inputs[0].checked = false; inputs[0].checked = false;
await inputs[0].dispatchEvent(event); inputs[0].dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
/** @type {Array<{ name: string }>} */ /** @type {Array<{ name: string }>} */
@ -110,7 +111,7 @@ export default test({
<p>Gamma</p> <p>Gamma</p>
</div> </div>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const inputs = target.querySelectorAll('input'); const inputs = target.querySelectorAll('input');
assert.equal(inputs[0].checked, false); assert.equal(inputs[0].checked, false);
@ -126,7 +127,8 @@ export default test({
const event = new window.Event('change'); const event = new window.Event('change');
inputs[0].checked = true; inputs[0].checked = true;
await inputs[0].dispatchEvent(event); inputs[0].dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -179,7 +181,8 @@ export default test({
` `
); );
inputs[3].checked = true; inputs[3].checked = true;
await inputs[3].dispatchEvent(event); inputs[3].dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -233,7 +236,8 @@ export default test({
); );
inputs[8].checked = false; inputs[8].checked = false;
await inputs[8].dispatchEvent(event); inputs[8].dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -37,7 +38,7 @@ export default test({
<label><input type="checkbox" value="3" checked> 3</label> <label><input type="checkbox" value="3" checked> 3</label>
<p>3</p> <p>3</p>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const inputs = target.querySelectorAll('input'); const inputs = target.querySelectorAll('input');
assert.equal(inputs[0].checked, true); assert.equal(inputs[0].checked, true);
assert.equal(inputs[1].checked, false); assert.equal(inputs[1].checked, false);
@ -58,8 +59,8 @@ export default test({
const event = new window.Event('change'); const event = new window.Event('change');
inputs[2].checked = true; inputs[2].checked = true;
await inputs[2].dispatchEvent(event); inputs[2].dispatchEvent(event);
await Promise.resolve(); flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -84,8 +85,8 @@ export default test({
); );
inputs[9].checked = true; inputs[9].checked = true;
await inputs[9].dispatchEvent(event); inputs[9].dispatchEvent(event);
await Promise.resolve(); flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -110,24 +111,24 @@ export default test({
); );
inputs[4].checked = false; inputs[4].checked = false;
await inputs[4].dispatchEvent(event); inputs[4].dispatchEvent(event);
await Promise.resolve(); flushSync();
inputs[5].checked = true; inputs[5].checked = true;
await inputs[5].dispatchEvent(event); inputs[5].dispatchEvent(event);
await Promise.resolve(); flushSync();
inputs[6].checked = true; inputs[6].checked = true;
await inputs[6].dispatchEvent(event); inputs[6].dispatchEvent(event);
await Promise.resolve(); flushSync();
inputs[7].checked = true; inputs[7].checked = true;
await inputs[7].dispatchEvent(event); inputs[7].dispatchEvent(event);
await Promise.resolve(); flushSync();
inputs[11].checked = false; inputs[11].checked = false;
await inputs[11].dispatchEvent(event); inputs[11].dispatchEvent(event);
await Promise.resolve(); flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -37,7 +38,7 @@ export default test({
<label><input type="checkbox" value="3"> 3</label> <label><input type="checkbox" value="3"> 3</label>
<p>1</p> <p>1</p>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const inputs = target.querySelectorAll('input'); const inputs = target.querySelectorAll('input');
assert.equal(inputs[0].checked, true); assert.equal(inputs[0].checked, true);
assert.equal(inputs[1].checked, false); assert.equal(inputs[1].checked, false);
@ -58,8 +59,8 @@ export default test({
const event = new window.Event('change'); const event = new window.Event('change');
inputs[2].checked = true; inputs[2].checked = true;
await inputs[2].dispatchEvent(event); inputs[2].dispatchEvent(event);
await Promise.resolve(); flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -84,8 +85,8 @@ export default test({
); );
inputs[8].checked = true; inputs[8].checked = true;
await inputs[8].dispatchEvent(event); inputs[8].dispatchEvent(event);
await Promise.resolve(); flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -150,8 +151,8 @@ export default test({
assert.equal(inputs[11].checked, false); assert.equal(inputs[11].checked, false);
inputs[5].checked = false; inputs[5].checked = false;
await inputs[5].dispatchEvent(event); inputs[5].dispatchEvent(event);
await Promise.resolve(); flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -15,7 +16,7 @@ export default test({
<label><input type="checkbox" value="z"> z</label> <label><input type="checkbox" value="z"> z</label>
<p></p> <p></p>
`, `,
async test({ assert, target, window }) { test({ assert, target, window }) {
const inputs = target.querySelectorAll('input'); const inputs = target.querySelectorAll('input');
assert.equal(inputs[0].checked, false); assert.equal(inputs[0].checked, false);
assert.equal(inputs[1].checked, false); assert.equal(inputs[1].checked, false);
@ -32,7 +33,8 @@ export default test({
const event = new window.Event('change'); const event = new window.Event('change');
inputs[2].checked = true; inputs[2].checked = true;
await inputs[2].dispatchEvent(event); inputs[2].dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -53,7 +55,8 @@ export default test({
); );
inputs[4].checked = true; inputs[4].checked = true;
await inputs[4].dispatchEvent(event); inputs[4].dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -74,7 +77,8 @@ export default test({
); );
inputs[5].checked = true; inputs[5].checked = true;
await inputs[5].dispatchEvent(event); inputs[5].dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,8 +1,9 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
// https://github.com/sveltejs/svelte/issues/7884 // https://github.com/sveltejs/svelte/issues/7884
export default test({ export default test({
async test({ assert, target, component, window }) { test({ assert, target, component, window }) {
let inputs = target.querySelectorAll('input'); let inputs = target.querySelectorAll('input');
assert.htmlEqual( assert.htmlEqual(
@ -27,11 +28,14 @@ export default test({
const event = new window.Event('change'); const event = new window.Event('change');
inputs[0].checked = true; inputs[0].checked = true;
await inputs[0].dispatchEvent(event); inputs[0].dispatchEvent(event);
flushSync();
inputs[2].checked = true; inputs[2].checked = true;
await inputs[2].dispatchEvent(event); inputs[2].dispatchEvent(event);
flushSync();
inputs[3].checked = true; inputs[3].checked = true;
await inputs[3].dispatchEvent(event); inputs[3].dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -52,8 +56,8 @@ export default test({
` `
); );
await component.update(); component.update();
await Promise.resolve(); flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -70,7 +74,8 @@ export default test({
inputs = target.querySelectorAll('input'); inputs = target.querySelectorAll('input');
inputs[0].checked = true; inputs[0].checked = true;
await inputs[0].dispatchEvent(event); inputs[0].dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,18 +1,19 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
// https://github.com/sveltejs/svelte/issues/7633 // https://github.com/sveltejs/svelte/issues/7633
export default test({ export default test({
async test({ assert, target, component }) { test({ assert, target, component }) {
let inputs = target.querySelectorAll('input'); let inputs = target.querySelectorAll('input');
assert.equal(inputs[0].checked, true); assert.equal(inputs[0].checked, true);
assert.equal(inputs[1].checked, false); assert.equal(inputs[1].checked, false);
assert.equal(inputs[2].checked, false); assert.equal(inputs[2].checked, false);
await component.moveDown(0); component.moveDown(0);
await component.moveDown(1); flushSync();
component.moveDown(1);
await Promise.resolve(); flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -34,13 +35,15 @@ export default test({
assert.equal(inputs[1].checked, false); assert.equal(inputs[1].checked, false);
assert.equal(inputs[2].checked, true); assert.equal(inputs[2].checked, true);
await (component.current = 'b'); component.current = 'b';
flushSync();
assert.equal(inputs[0].checked, true); assert.equal(inputs[0].checked, true);
assert.equal(inputs[1].checked, false); assert.equal(inputs[1].checked, false);
assert.equal(inputs[2].checked, false); assert.equal(inputs[2].checked, false);
await component.moveDown(1); component.moveDown(1);
flushSync();
// after shifting order, should still keep the correct radio checked // after shifting order, should still keep the correct radio checked
inputs = target.querySelectorAll('input'); inputs = target.querySelectorAll('input');

@ -1,7 +1,8 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
async test({ assert, target, component, window }) { test({ assert, target, component, window }) {
const button = target.querySelector('button'); const button = target.querySelector('button');
ok(button); ok(button);
const clickEvent = new window.Event('click', { bubbles: true }); const clickEvent = new window.Event('click', { bubbles: true });
@ -27,24 +28,29 @@ export default test({
validate_inputs(true, true); validate_inputs(true, true);
input1.checked = false; input1.checked = false;
await input1.dispatchEvent(changeEvent); input1.dispatchEvent(changeEvent);
flushSync();
assert.deepEqual(component.test, ['b']); assert.deepEqual(component.test, ['b']);
input2.checked = false; input2.checked = false;
await input2.dispatchEvent(changeEvent); input2.dispatchEvent(changeEvent);
flushSync();
assert.deepEqual(component.test, []); assert.deepEqual(component.test, []);
input1.checked = true; input1.checked = true;
input2.checked = true; input2.checked = true;
await input1.dispatchEvent(changeEvent); input1.dispatchEvent(changeEvent);
await input2.dispatchEvent(changeEvent); input2.dispatchEvent(changeEvent);
flushSync();
assert.deepEqual(component.test, ['a', 'b']); assert.deepEqual(component.test, ['a', 'b']);
await button.dispatchEvent(clickEvent); button.dispatchEvent(clickEvent);
flushSync();
assert.deepEqual(component.test, ['a', 'b']); // should it be ['a'] only? valid arguments for both outcomes assert.deepEqual(component.test, ['a', 'b']); // should it be ['a'] only? valid arguments for both outcomes
input1.checked = false; input1.checked = false;
await input1.dispatchEvent(changeEvent); input1.dispatchEvent(changeEvent);
flushSync();
assert.deepEqual(component.test, []); assert.deepEqual(component.test, []);
} }
}); });

@ -1,7 +1,8 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
async test({ assert, target, component, window }) { test({ assert, target, component, window }) {
const button = target.querySelector('button'); const button = target.querySelector('button');
ok(button); ok(button);
const clickEvent = new window.Event('click', { bubbles: true }); const clickEvent = new window.Event('click', { bubbles: true });
@ -27,18 +28,22 @@ export default test({
validate_inputs(false, true); validate_inputs(false, true);
input1.checked = true; input1.checked = true;
await input1.dispatchEvent(changeEvent); input1.dispatchEvent(changeEvent);
flushSync();
assert.deepEqual(component.test, 'a'); assert.deepEqual(component.test, 'a');
input2.checked = true; input2.checked = true;
await input2.dispatchEvent(changeEvent); input2.dispatchEvent(changeEvent);
flushSync();
assert.deepEqual(component.test, 'b'); assert.deepEqual(component.test, 'b');
await button.dispatchEvent(clickEvent); button.dispatchEvent(clickEvent);
flushSync();
assert.deepEqual(component.test, 'b'); // should it be undefined? valid arguments for both outcomes assert.deepEqual(component.test, 'b'); // should it be undefined? valid arguments for both outcomes
input1.checked = true; input1.checked = true;
await input1.dispatchEvent(changeEvent); input1.dispatchEvent(changeEvent);
flushSync();
assert.deepEqual(component.test, 'a'); assert.deepEqual(component.test, 'a');
} }
}); });

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -15,7 +16,7 @@ export default test({
<p>number 42</p> <p>number 42</p>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const input = target.querySelector('input'); const input = target.querySelector('input');
ok(input); ok(input);
assert.equal(input.value, '42'); assert.equal(input.value, '42');
@ -23,7 +24,8 @@ export default test({
const event = new window.Event('input'); const event = new window.Event('input');
input.value = '43'; input.value = '43';
await input.dispatchEvent(event); input.dispatchEvent(event);
flushSync();
assert.equal(component.count, 43); assert.equal(component.count, 43);
assert.htmlEqual( assert.htmlEqual(
@ -46,7 +48,8 @@ export default test({
// empty string should be treated as null // empty string should be treated as null
input.value = ''; input.value = '';
await input.dispatchEvent(event); input.dispatchEvent(event);
flushSync();
assert.equal(component.count, null); assert.equal(component.count, null);
assert.htmlEqual( assert.htmlEqual(

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
const values = [{ name: 'Alpha' }, { name: 'Beta' }, { name: 'Gamma' }]; const values = [{ name: 'Alpha' }, { name: 'Beta' }, { name: 'Gamma' }];
@ -37,7 +38,7 @@ export default test({
<p>Beta</p>`, <p>Beta</p>`,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const inputs = target.querySelectorAll('input'); const inputs = target.querySelectorAll('input');
assert.equal(inputs[0].checked, false); assert.equal(inputs[0].checked, false);
assert.equal(inputs[1].checked, true); assert.equal(inputs[1].checked, true);
@ -46,7 +47,8 @@ export default test({
const event = new window.Event('change'); const event = new window.Event('change');
inputs[0].checked = true; inputs[0].checked = true;
await inputs[0].dispatchEvent(event); inputs[0].dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -13,7 +14,7 @@ export default test({
<p>10 of 10</p> <p>10 of 10</p>
`, `,
async test({ assert, target, window }) { test({ assert, target, window }) {
const input = target.querySelector('input'); const input = target.querySelector('input');
ok(input); ok(input);
assert.equal(input.value, '10'); assert.equal(input.value, '10');
@ -25,8 +26,8 @@ export default test({
const button = target.querySelector('button'); const button = target.querySelector('button');
ok(button); ok(button);
await button.dispatchEvent(new window.Event('click', { bubbles: true })); button.dispatchEvent(new window.Event('click', { bubbles: true }));
await Promise.resolve(); flushSync();
assert.equal(input.value, '20'); assert.equal(input.value, '20');
assert.htmlEqual( assert.htmlEqual(

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -15,7 +16,7 @@ export default test({
<p>number 42</p> <p>number 42</p>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const input = target.querySelector('input'); const input = target.querySelector('input');
ok(input); ok(input);
assert.equal(input.value, '42'); assert.equal(input.value, '42');
@ -23,7 +24,8 @@ export default test({
const event = new window.Event('input'); const event = new window.Event('input');
input.value = '43'; input.value = '43';
await input.dispatchEvent(event); input.dispatchEvent(event);
flushSync();
assert.equal(component.count, 43); assert.equal(component.count, 43);
assert.htmlEqual( assert.htmlEqual(

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -15,7 +16,7 @@ export default test({
<div><input value=x><p>x</p></div> <div><input value=x><p>x</p></div>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const inputs = [...target.querySelectorAll('input')]; const inputs = [...target.querySelectorAll('input')];
const event = new window.Event('input'); const event = new window.Event('input');
@ -23,9 +24,10 @@ export default test({
inputs[0].value = 'b'; inputs[0].value = 'b';
inputs[1].value = 'y'; inputs[1].value = 'y';
await inputs[0].dispatchEvent(event); inputs[0].dispatchEvent(event);
await inputs[1].dispatchEvent(event); flushSync();
await Promise.resolve(); inputs[1].dispatchEvent(event);
flushSync();
assert.equal(component.foo, 'b'); assert.equal(component.foo, 'b');
assert.equal(component.items[0], 'y'); assert.equal(component.items[0], 'y');

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -45,7 +46,7 @@ export default test({
<p>remaining:one / done:two / remaining:three</p> <p>remaining:one / done:two / remaining:three</p>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
/** /**
* @param {number} i * @param {number} i
* @param {string} text * @param {string} text
@ -88,8 +89,8 @@ export default test({
` `
); );
await set_text(1, 'four'); set_text(1, 'four');
await Promise.resolve(); flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -113,8 +114,8 @@ export default test({
{ done: false, text: 'four' } { done: false, text: 'four' }
]); ]);
await set_done(0, true); set_done(0, true);
await Promise.resolve(); flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -29,7 +30,7 @@ export default test({
</div> </div>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const inputs = [...target.querySelectorAll('input')]; const inputs = [...target.querySelectorAll('input')];
const items = component.items; const items = component.items;
const event = new window.Event('input'); const event = new window.Event('input');
@ -37,8 +38,8 @@ export default test({
assert.equal(inputs[0].value, 'one'); assert.equal(inputs[0].value, 'one');
inputs[1].value = 'four'; inputs[1].value = 'four';
await inputs[1].dispatchEvent(event); inputs[1].dispatchEvent(event);
await Promise.resolve(); flushSync();
assert.equal(items[1], 'four'); assert.equal(items[1], 'four');
assert.htmlEqual( assert.htmlEqual(

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -15,7 +16,7 @@ export default test({
<input value=world> <input value=world>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const input = target.querySelector('input'); const input = target.querySelector('input');
ok(input); ok(input);
assert.equal(input.value, 'world'); assert.equal(input.value, 'world');
@ -23,7 +24,8 @@ export default test({
const event = new window.Event('input'); const event = new window.Event('input');
input.value = 'everybody'; input.value = 'everybody';
await input.dispatchEvent(event); input.dispatchEvent(event);
flushSync();
assert.equal(input.value, 'everybody'); assert.equal(input.value, 'everybody');
assert.htmlEqual( assert.htmlEqual(

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -18,7 +19,7 @@ export default test({
<pre>{"foo":"a","bar":"b","baz":"c"}</pre> <pre>{"foo":"a","bar":"b","baz":"c"}</pre>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const input = target.querySelector('input'); const input = target.querySelector('input');
ok(input); ok(input);
const event = new window.Event('input'); const event = new window.Event('input');
@ -27,7 +28,8 @@ export default test({
// edit bar // edit bar
input.value = 'e'; input.value = 'e';
await input.dispatchEvent(event); input.dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -42,7 +44,8 @@ export default test({
assert.equal(input.value, 'c'); assert.equal(input.value, 'c');
input.value = 'f'; input.value = 'f';
await input.dispatchEvent(event); input.dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -57,7 +60,8 @@ export default test({
assert.equal(input.value, 'a'); assert.equal(input.value, 'a');
input.value = 'd'; input.value = 'd';
await input.dispatchEvent(event); input.dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -15,7 +16,7 @@ export default test({
<p>hello alice</p> <p>hello alice</p>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const input = target.querySelector('input'); const input = target.querySelector('input');
ok(input); ok(input);
@ -24,7 +25,8 @@ export default test({
const event = new window.Event('input'); const event = new window.Event('input');
input.value = 'bob'; input.value = 'bob';
await input.dispatchEvent(event); input.dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -18,7 +19,7 @@ export default test({
<pre>{"foo":"a","bar":"b","baz":"c"}</pre> <pre>{"foo":"a","bar":"b","baz":"c"}</pre>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const input = target.querySelector('input'); const input = target.querySelector('input');
ok(input); ok(input);
const event = new window.Event('input'); const event = new window.Event('input');
@ -27,8 +28,8 @@ export default test({
// edit bar // edit bar
input.value = 'e'; input.value = 'e';
await input.dispatchEvent(event); input.dispatchEvent(event);
await Promise.resolve(); flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -43,8 +44,8 @@ export default test({
assert.equal(input.value, 'c'); assert.equal(input.value, 'c');
input.value = 'f'; input.value = 'f';
await input.dispatchEvent(event); input.dispatchEvent(event);
await Promise.resolve(); flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -59,8 +60,8 @@ export default test({
assert.equal(input.value, 'a'); assert.equal(input.value, 'a');
input.value = 'd'; input.value = 'd';
await input.dispatchEvent(event); input.dispatchEvent(event);
await Promise.resolve(); flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -19,16 +20,16 @@ export default test({
<div><input value=three><p>three</p></div> <div><input value=three><p>three</p></div>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const inputs = [...target.querySelectorAll('input')]; const inputs = [...target.querySelectorAll('input')];
assert.equal(inputs[0].value, 'one'); assert.equal(inputs[0].value, 'one');
const event = new window.Event('input'); const event = new window.Event('input', { bubbles: true });
inputs[1].value = 'four'; inputs[1].value = 'four';
await inputs[1].dispatchEvent(event); inputs[1].dispatchEvent(event);
await Promise.resolve(); flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -15,7 +16,7 @@ export default test({
<p>hello alice</p> <p>hello alice</p>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const input = target.querySelector('input'); const input = target.querySelector('input');
ok(input); ok(input);
@ -24,7 +25,8 @@ export default test({
const event = new window.Event('input'); const event = new window.Event('input');
input.value = 'bob'; input.value = 'bob';
await input.dispatchEvent(event); input.dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -15,7 +16,7 @@ export default test({
<p>hello world</p> <p>hello world</p>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const input = target.querySelector('input'); const input = target.querySelector('input');
ok(input); ok(input);
assert.equal(input.value, 'world'); assert.equal(input.value, 'world');
@ -23,7 +24,8 @@ export default test({
const event = new window.Event('input'); const event = new window.Event('input');
input.value = 'everybody'; input.value = 'everybody';
await input.dispatchEvent(event); input.dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -15,7 +16,7 @@ export default test({
<p>foo: 2</p> <p>foo: 2</p>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const select = target.querySelector('select'); const select = target.querySelector('select');
ok(select); ok(select);
const options = [...target.querySelectorAll('option')]; const options = [...target.querySelectorAll('option')];
@ -26,7 +27,8 @@ export default test({
const change = new window.Event('change'); const change = new window.Event('change');
options[2].selected = true; options[2].selected = true;
await select.dispatchEvent(change); select.dispatchEvent(change);
flushSync();
assert.equal(component.foo, 3); assert.equal(component.foo, 3);
assert.htmlEqual( assert.htmlEqual(

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -15,7 +16,7 @@ export default test({
<p>selected: two, three</p> <p>selected: two, three</p>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const select = target.querySelector('select'); const select = target.querySelector('select');
ok(select); ok(select);
const options = [...target.querySelectorAll('option')]; const options = [...target.querySelectorAll('option')];
@ -23,7 +24,8 @@ export default test({
const change = new window.Event('change'); const change = new window.Event('change');
options[1].selected = false; options[1].selected = false;
await select.dispatchEvent(change); select.dispatchEvent(change);
flushSync();
assert.deepEqual(component.selected, ['three']); assert.deepEqual(component.selected, ['three']);
assert.htmlEqual( assert.htmlEqual(
@ -40,7 +42,8 @@ export default test({
); );
options[0].selected = true; options[0].selected = true;
await select.dispatchEvent(change); select.dispatchEvent(change);
flushSync();
assert.deepEqual(component.selected, ['one', 'three']); assert.deepEqual(component.selected, ['one', 'three']);
assert.htmlEqual( assert.htmlEqual(

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -23,7 +24,7 @@ export default test({
</select> </select>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const select = target.querySelector('select'); const select = target.querySelector('select');
ok(select); ok(select);
@ -35,7 +36,8 @@ export default test({
const change = new window.Event('change'); const change = new window.Event('change');
options[1].selected = true; options[1].selected = true;
await select.dispatchEvent(change); select.dispatchEvent(change);
flushSync();
assert.equal(component.name, 'World'); assert.equal(component.name, 'World');
assert.htmlEqual( assert.htmlEqual(

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -17,7 +18,7 @@ export default test({
return { selected: 'one' }; return { selected: 'one' };
}, },
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const select = target.querySelector('select'); const select = target.querySelector('select');
ok(select); ok(select);
@ -29,7 +30,8 @@ export default test({
const change = new window.Event('change'); const change = new window.Event('change');
options[1].selected = true; options[1].selected = true;
await select.dispatchEvent(change); select.dispatchEvent(change);
flushSync();
assert.equal(component.selected, 'two'); assert.equal(component.selected, 'two');
assert.htmlEqual( assert.htmlEqual(

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -11,7 +12,7 @@ export default test({
<p>hello world</p> <p>hello world</p>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const input = target.querySelector('input'); const input = target.querySelector('input');
ok(input); ok(input);
@ -30,7 +31,8 @@ export default test({
}); });
input.value = 'everybody'; input.value = 'everybody';
await input.dispatchEvent(event); input.dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -40,7 +42,8 @@ export default test({
` `
); );
await component.user.set({ name: 'goodbye' }); component.user.set({ name: 'goodbye' });
flushSync();
assert.equal(input.value, 'goodbye'); assert.equal(input.value, 'goodbye');
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -9,12 +10,13 @@ export default test({
0 0
`, `,
async test({ assert, target, window }) { test({ assert, target, window }) {
const input = target.querySelector('input'); const input = target.querySelector('input');
ok(input); ok(input);
input.checked = true; input.checked = true;
await input.dispatchEvent(new window.Event('change', { bubbles: true })); input.dispatchEvent(new window.Event('change', { bubbles: true }));
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -15,7 +16,7 @@ export default test({
<div contenteditable="true">world</div> <div contenteditable="true">world</div>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const input = target.querySelector('input'); const input = target.querySelector('input');
ok(input); ok(input);
assert.equal(input.value, 'world'); assert.equal(input.value, 'world');
@ -31,7 +32,8 @@ export default test({
}); });
input.value = 'everybody'; input.value = 'everybody';
await input.dispatchEvent(event); input.dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -43,7 +45,8 @@ export default test({
` `
); );
await component.name.set('goodbye'); component.name.set('goodbye');
flushSync();
assert.equal(input.value, 'goodbye'); assert.equal(input.value, 'goodbye');
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -15,7 +16,7 @@ export default test({
<p>some text</p> <p>some text</p>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const textarea = target.querySelector('textarea'); const textarea = target.querySelector('textarea');
ok(textarea); ok(textarea);
assert.equal(textarea.value, 'some text'); assert.equal(textarea.value, 'some text');
@ -23,7 +24,8 @@ export default test({
const event = new window.Event('input'); const event = new window.Event('input');
textarea.value = 'hello'; textarea.value = 'hello';
await textarea.dispatchEvent(event); textarea.dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -11,13 +12,14 @@ export default test({
<p>value: initial</p> <p>value: initial</p>
`, `,
async test({ assert, target, window }) { test({ assert, target, window }) {
const input = target.querySelector('input'); const input = target.querySelector('input');
ok(input); ok(input);
const event = new window.Event('input'); const event = new window.Event('input');
input.value = 'changed'; input.value = 'changed';
await input.dispatchEvent(event); input.dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,13 +1,15 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
async test({ assert, target, window }) { test({ assert, target, window }) {
const input = target.querySelector('input'); const input = target.querySelector('input');
ok(input); ok(input);
const event = new window.Event('input'); const event = new window.Event('input');
input.value = 'changed'; input.value = 'changed';
await input.dispatchEvent(event); input.dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -10,7 +11,8 @@ export default test({
async test({ assert, target, window }) { async test({ assert, target, window }) {
const button = target.querySelector('button'); const button = target.querySelector('button');
await button?.dispatchEvent(new window.MouseEvent('click', { bubbles: true })); button?.dispatchEvent(new window.MouseEvent('click', { bubbles: true }));
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -7,10 +8,11 @@ export default test({
<button></button> <button></button>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
// change from inside // change from inside
const button = target.querySelector('button'); const button = target.querySelector('button');
await button?.dispatchEvent(new window.Event('click', { bubbles: true })); button?.dispatchEvent(new window.Event('click', { bubbles: true }));
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -8,10 +9,11 @@ export default test({
<button></button> <button></button>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
// change from inside // change from inside
const button = target.querySelector('button'); const button = target.querySelector('button');
await button?.dispatchEvent(new window.Event('click', { bubbles: true })); button?.dispatchEvent(new window.Event('click', { bubbles: true }));
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -10,10 +11,11 @@ export default test({
<button></button> <button></button>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
// change from inside // change from inside
const button = target.querySelector('button'); const button = target.querySelector('button');
await button?.dispatchEvent(new window.Event('click', { bubbles: true })); button?.dispatchEvent(new window.Event('click', { bubbles: true }));
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
// overflow bitmask + slot missing `let:` // overflow bitmask + slot missing `let:`
@ -9,10 +10,11 @@ export default test({
<button>Toggle outside</button> <button>Toggle outside</button>
`, `,
async test({ assert, target, window }) { test({ assert, target, window }) {
const button = target.querySelectorAll('button')[1]; const button = target.querySelectorAll('button')[1];
const div = target.querySelector('div'); const div = target.querySelector('div');
await div?.dispatchEvent(new window.MouseEvent('click', { bubbles: true })); div?.dispatchEvent(new window.MouseEvent('click', { bubbles: true }));
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
` `
@ -24,7 +26,8 @@ export default test({
` `
); );
await button.dispatchEvent(new window.MouseEvent('click', { bubbles: true })); button.dispatchEvent(new window.MouseEvent('click', { bubbles: true }));
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
` `

@ -1,20 +1,23 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
async test({ assert, target, window }) { test({ assert, target, window }) {
const [input1, input2] = target.querySelectorAll('input'); const [input1, input2] = target.querySelectorAll('input');
assert.equal(input1.value, 'something'); assert.equal(input1.value, 'something');
assert.equal(input2.value, 'something'); assert.equal(input2.value, 'something');
input1.value = 'abc'; input1.value = 'abc';
await input1.dispatchEvent(new window.Event('input')); input1.dispatchEvent(new window.Event('input'));
flushSync();
assert.equal(input1.value, 'abc'); assert.equal(input1.value, 'abc');
assert.equal(input2.value, 'abc'); assert.equal(input2.value, 'abc');
await target target
.querySelector('button') .querySelector('button')
?.dispatchEvent(new window.MouseEvent('click', { bubbles: true })); ?.dispatchEvent(new window.MouseEvent('click', { bubbles: true }));
flushSync();
assert.equal(input1.value, 'Reset'); assert.equal(input1.value, 'Reset');
assert.equal(input2.value, 'Reset'); assert.equal(input2.value, 'Reset');

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -9,11 +10,11 @@ export default test({
<p></p> <p></p>
`, `,
async test({ assert, target, window }) { test({ assert, target, window }) {
const button = target.querySelectorAll('button')[1]; const button = target.querySelectorAll('button')[1];
await button.dispatchEvent(new window.Event('click', { bubbles: true })); button.dispatchEvent(new window.Event('click', { bubbles: true }));
await Promise.resolve(); flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -9,11 +10,11 @@ export default test({
<p></p> <p></p>
`, `,
async test({ assert, target, window }) { test({ assert, target, window }) {
const button = target.querySelectorAll('button')[1]; const button = target.querySelectorAll('button')[1];
await button.dispatchEvent(new window.Event('click', { bubbles: true })); button.dispatchEvent(new window.Event('click', { bubbles: true }));
await Promise.resolve(); flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -17,15 +18,11 @@ export default test({
<p></p> <p></p>
`, `,
async test({ assert, target, window }) { test({ assert, target, window }) {
const button = target.querySelectorAll('button')[1]; const button = target.querySelectorAll('button')[1];
await button.dispatchEvent(new window.Event('click', { bubbles: true })); button.dispatchEvent(new window.Event('click', { bubbles: true }));
// Multiple ticks necessary because each update is async flushSync();
await Promise.resolve();
await Promise.resolve();
await Promise.resolve();
await Promise.resolve();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -11,14 +12,14 @@ export default test({
<p>foo</p> <p>foo</p>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const event = new window.MouseEvent('input'); const event = new window.MouseEvent('input');
const input = target.querySelector('input'); const input = target.querySelector('input');
ok(input); ok(input);
input.value = 'blah'; input.value = 'blah';
await input.dispatchEvent(event); input.dispatchEvent(event);
await Promise.resolve(); flushSync();
assert.deepEqual(component.deep, { name: 'blah' }); assert.deepEqual(component.deep, { name: 'blah' });
assert.htmlEqual( assert.htmlEqual(

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -11,14 +12,14 @@ export default test({
<p>foo</p> <p>foo</p>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const event = new window.MouseEvent('input'); const event = new window.MouseEvent('input');
const input = target.querySelector('input'); const input = target.querySelector('input');
ok(input); ok(input);
input.value = 'blah'; input.value = 'blah';
await input.dispatchEvent(event); input.dispatchEvent(event);
await Promise.resolve(); flushSync();
assert.deepEqual(component.deep, { name: 'blah' }); assert.deepEqual(component.deep, { name: 'blah' });
assert.htmlEqual( assert.htmlEqual(

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -13,13 +14,13 @@ export default test({
<p>foo, bar, baz</p> <p>foo, bar, baz</p>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const event = new window.MouseEvent('input'); const event = new window.MouseEvent('input');
const inputs = target.querySelectorAll('input'); const inputs = target.querySelectorAll('input');
inputs[0].value = 'blah'; inputs[0].value = 'blah';
await inputs[0].dispatchEvent(event); inputs[0].dispatchEvent(event);
await Promise.resolve(); flushSync();
assert.deepEqual(component.a, [{ name: 'blah' }, { name: 'bar' }, { name: 'baz' }]); assert.deepEqual(component.a, [{ name: 'blah' }, { name: 'bar' }, { name: 'baz' }]);
assert.htmlEqual( assert.htmlEqual(

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -13,13 +14,13 @@ export default test({
<p>foo, bar, baz</p> <p>foo, bar, baz</p>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const event = new window.MouseEvent('input'); const event = new window.MouseEvent('input');
const inputs = target.querySelectorAll('input'); const inputs = target.querySelectorAll('input');
inputs[0].value = 'blah'; inputs[0].value = 'blah';
await inputs[0].dispatchEvent(event); inputs[0].dispatchEvent(event);
await Promise.resolve(); flushSync();
assert.deepEqual(component.a, ['blah', 'bar', 'baz']); assert.deepEqual(component.a, ['blah', 'bar', 'baz']);
assert.htmlEqual( assert.htmlEqual(

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -28,12 +29,12 @@ export default test({
<p><span>1</span></p> <p><span>1</span></p>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const click = new window.MouseEvent('click', { bubbles: true }); const click = new window.MouseEvent('click', { bubbles: true });
const spans = target.querySelectorAll('span'); const spans = target.querySelectorAll('span');
await spans[0].dispatchEvent(click); spans[0].dispatchEvent(click);
await Promise.resolve(); flushSync();
assert.equal(component.currentIdentifier, 1); assert.equal(component.currentIdentifier, 1);
assert.htmlEqual( assert.htmlEqual(
@ -65,8 +66,8 @@ export default test({
` `
); );
await spans[0].dispatchEvent(click); spans[0].dispatchEvent(click);
await Promise.resolve(); flushSync();
assert.equal(component.currentIdentifier, null); assert.equal(component.currentIdentifier, null);
assert.htmlEqual( assert.htmlEqual(

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -15,11 +16,12 @@ export default test({
<p>baz x: initial</p> <p>baz x: initial</p>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const click = new window.MouseEvent('click', { bubbles: true }); const click = new window.MouseEvent('click', { bubbles: true });
const buttons = [...target.querySelectorAll('button')]; const buttons = [...target.querySelectorAll('button')];
await buttons[0].dispatchEvent(click); buttons[0].dispatchEvent(click);
flushSync();
assert.equal(component.x, 'p'); assert.equal(component.x, 'p');
assert.htmlEqual( assert.htmlEqual(
@ -35,7 +37,8 @@ export default test({
` `
); );
await buttons[1].dispatchEvent(click); buttons[1].dispatchEvent(click);
flushSync();
assert.equal(component.x, 'q'); assert.equal(component.x, 'q');
assert.htmlEqual( assert.htmlEqual(
@ -51,7 +54,8 @@ export default test({
` `
); );
await buttons[2].dispatchEvent(click); buttons[2].dispatchEvent(click);
flushSync();
assert.equal(component.x, 'r'); assert.equal(component.x, 'r');
assert.htmlEqual( assert.htmlEqual(

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -11,7 +12,8 @@ export default test({
const button = target.querySelector('button'); const button = target.querySelector('button');
ok(button); ok(button);
await button.dispatchEvent(click); button.dispatchEvent(click);
flushSync();
assert.equal(component.x, undefined); assert.equal(component.x, undefined);
assert.htmlEqual( assert.htmlEqual(
@ -22,7 +24,8 @@ export default test({
` `
); );
await button.dispatchEvent(click); button.dispatchEvent(click);
flushSync();
assert.equal(component.x, undefined); assert.equal(component.x, undefined);
assert.htmlEqual( assert.htmlEqual(

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -6,12 +7,13 @@ export default test({
<p>count: 10</p> <p>count: 10</p>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const click = new window.MouseEvent('click', { bubbles: true }); const click = new window.MouseEvent('click', { bubbles: true });
const button = target.querySelector('button'); const button = target.querySelector('button');
ok(button); ok(button);
await button.dispatchEvent(click); button.dispatchEvent(click);
flushSync();
assert.equal(component.x, 11); assert.equal(component.x, 11);
assert.htmlEqual( assert.htmlEqual(
@ -22,7 +24,8 @@ export default test({
` `
); );
await button.dispatchEvent(click); button.dispatchEvent(click);
flushSync();
assert.equal(component.x, 12); assert.equal(component.x, 12);
assert.htmlEqual( assert.htmlEqual(

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -6,12 +7,13 @@ export default test({
<button>button 0</button> <button>button 0</button>
`, `,
async test({ assert, target, window }) { test({ assert, target, window }) {
const event = new window.MouseEvent('click', { bubbles: true }); const event = new window.MouseEvent('click', { bubbles: true });
const buttons = target.querySelectorAll('button'); const buttons = target.querySelectorAll('button');
await buttons[0].dispatchEvent(event); buttons[0].dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
` `
@ -20,7 +22,8 @@ export default test({
` `
); );
await buttons[1].dispatchEvent(event); buttons[1].dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
` `
@ -30,7 +33,8 @@ export default test({
); );
// reactive update, reset to 2 // reactive update, reset to 2
await buttons[0].dispatchEvent(event); buttons[0].dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
` `
@ -40,7 +44,8 @@ export default test({
); );
// bound to main, reset to 2 // bound to main, reset to 2
await buttons[1].dispatchEvent(event); buttons[1].dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
` `

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -9,10 +10,11 @@ export default test({
<button>Hide</button> <button>Hide</button>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const click = new window.MouseEvent('click', { bubbles: true }); const click = new window.MouseEvent('click', { bubbles: true });
await target.querySelector('button')?.dispatchEvent(click); target.querySelector('button')?.dispatchEvent(click);
flushSync();
assert.equal(component.show, false); assert.equal(component.show, false);
assert.htmlEqual( assert.htmlEqual(
@ -22,7 +24,8 @@ export default test({
` `
); );
await target.querySelector('button')?.dispatchEvent(click); target.querySelector('button')?.dispatchEvent(click);
flushSync();
assert.equal(component.show, true); assert.equal(component.show, true);
assert.htmlEqual( assert.htmlEqual(

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -12,7 +13,7 @@ export default test({
<div></div> <div></div>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
let count = 0; let count = 0;
component.callback = () => { component.callback = () => {
count++; count++;
@ -21,8 +22,8 @@ export default test({
const [input1, input2] = target.querySelectorAll('input'); const [input1, input2] = target.querySelectorAll('input');
input1.value = '1'; input1.value = '1';
await input1.dispatchEvent(new window.Event('input')); input1.dispatchEvent(new window.Event('input'));
await Promise.resolve(); flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -37,8 +38,8 @@ export default test({
assert.equal(count, 1); assert.equal(count, 1);
input2.value = '123'; input2.value = '123';
await input2.dispatchEvent(new window.Event('input')); input2.dispatchEvent(new window.Event('input'));
await Promise.resolve(); flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -53,8 +54,8 @@ export default test({
assert.equal(count, 2); assert.equal(count, 2);
input1.value = '456'; input1.value = '456';
await input1.dispatchEvent(new window.Event('input')); input1.dispatchEvent(new window.Event('input'));
await Promise.resolve(); flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -6,12 +7,13 @@ export default test({
<p>count: 0</p> <p>count: 0</p>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const click = new window.MouseEvent('click', { bubbles: true }); const click = new window.MouseEvent('click', { bubbles: true });
const button = target.querySelector('button'); const button = target.querySelector('button');
ok(button); ok(button);
await button.dispatchEvent(click); button.dispatchEvent(click);
flushSync();
assert.equal(component.x, 1); assert.equal(component.x, 1);
assert.htmlEqual( assert.htmlEqual(
@ -22,7 +24,8 @@ export default test({
` `
); );
await button.dispatchEvent(click); button.dispatchEvent(click);
flushSync();
assert.equal(component.x, 2); assert.equal(component.x, 2);
assert.htmlEqual( assert.htmlEqual(

@ -1,10 +1,12 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
html: `child: 0 parent: 0 <button>inc x</button>`, html: `child: 0 parent: 0 <button>inc x</button>`,
async test({ assert, target }) { test({ assert, target }) {
await target.querySelector('button')?.click(); target.querySelector('button')?.click();
flushSync();
assert.htmlEqual(target.innerHTML, `child: 1 parent: 1 <button>inc x</button>`); assert.htmlEqual(target.innerHTML, `child: 1 parent: 1 <button>inc x</button>`);
} }
}); });

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -6,10 +7,11 @@ export default test({
<button slot="footer">Button</button> <button slot="footer">Button</button>
<button slot="footer">Button</button> <button slot="footer">Button</button>
`, `,
async test({ assert, target, window }) { test({ assert, target, window }) {
const [btn, btn1, btn2] = target.querySelectorAll('button'); const [btn, btn1, btn2] = target.querySelectorAll('button');
await btn.dispatchEvent(new window.MouseEvent('click', { bubbles: true })); btn.dispatchEvent(new window.MouseEvent('click', { bubbles: true }));
flushSync();
assert.equal(btn1.disabled, true); assert.equal(btn1.disabled, true);
assert.equal(btn2.disabled, true); assert.equal(btn2.disabled, true);

@ -1,19 +1,22 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
html: '<input> <input> <input>', html: '<input> <input> <input>',
ssrHtml: '<input value="Blub"> <input value="Blub"> <input value="Blub">', ssrHtml: '<input value="Blub"> <input value="Blub"> <input value="Blub">',
async test({ assert, target, component, window }) { test({ assert, target, component, window }) {
const [input1, input2, inputFallback] = target.querySelectorAll('input'); const [input1, input2, inputFallback] = target.querySelectorAll('input');
// TODO this works differently now, deduplicates to one subscription - ok? // TODO this works differently now, deduplicates to one subscription - ok?
// assert.equal(component.getSubscriberCount(), 3); // assert.equal(component.getSubscriberCount(), 3);
input1.value = 'a'; input1.value = 'a';
await input1.dispatchEvent(new window.Event('input')); input1.dispatchEvent(new window.Event('input'));
flushSync();
input1.value = 'ab'; input1.value = 'ab';
await input1.dispatchEvent(new window.Event('input')); input1.dispatchEvent(new window.Event('input'));
flushSync();
assert.equal(input1.value, 'ab'); assert.equal(input1.value, 'ab');
assert.equal(input2.value, 'ab'); assert.equal(input2.value, 'ab');
assert.equal(inputFallback.value, 'ab'); assert.equal(inputFallback.value, 'ab');

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -6,13 +7,14 @@ export default test({
<div>Icon B</div> <div>Icon B</div>
`, `,
async test({ assert, target, window }) { test({ assert, target, window }) {
const btn = target.querySelector('button'); const btn = target.querySelector('button');
ok(btn); ok(btn);
const clickEvent = new window.MouseEvent('click', { bubbles: true }); const clickEvent = new window.MouseEvent('click', { bubbles: true });
await btn.dispatchEvent(clickEvent); btn.dispatchEvent(clickEvent);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -22,7 +24,8 @@ export default test({
` `
); );
await btn.dispatchEvent(clickEvent); btn.dispatchEvent(clickEvent);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
// $$props reactivity in slot fallback // $$props reactivity in slot fallback
@ -11,12 +12,13 @@ export default test({
{"value":""} {"value":""}
`, `,
async test({ assert, target, window }) { test({ assert, target, window }) {
const input = target.querySelector('input'); const input = target.querySelector('input');
ok(input); ok(input);
input.value = 'abc'; input.value = 'abc';
await input.dispatchEvent(new window.Event('input')); input.dispatchEvent(new window.Event('input'));
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -6,11 +7,12 @@ export default test({
<span>0</span> <span>0</span>
`, `,
async test({ assert, target, window }) { test({ assert, target, window }) {
const button = target.querySelector('button'); const button = target.querySelector('button');
const click = new window.MouseEvent('click', { bubbles: true }); const click = new window.MouseEvent('click', { bubbles: true });
await button?.dispatchEvent(click); button?.dispatchEvent(click);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -6,11 +7,12 @@ export default test({
<span>0 ()</span> <span>0 ()</span>
`, `,
async test({ assert, target, window }) { test({ assert, target, window }) {
const button = target.querySelector('button'); const button = target.querySelector('button');
const click = new window.MouseEvent('click', { bubbles: true }); const click = new window.MouseEvent('click', { bubbles: true });
await button?.dispatchEvent(click); button?.dispatchEvent(click);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -7,11 +8,12 @@ export default test({
</div> </div>
`, `,
async test({ assert, target, window }) { test({ assert, target, window }) {
const div = target.querySelector('div'); const div = target.querySelector('div');
const click = new window.MouseEvent('click', { bubbles: true }); const click = new window.MouseEvent('click', { bubbles: true });
await div?.dispatchEvent(click); div?.dispatchEvent(click);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -15,11 +16,12 @@ export default test({
<button>Increment</button> <button>Increment</button>
</div> </div>
`, `,
async test({ assert, target, window }) { test({ assert, target, window }) {
const [button1, button2, button3] = target.querySelectorAll('button'); const [button1, button2, button3] = target.querySelectorAll('button');
const event = new window.MouseEvent('click', { bubbles: true }); const event = new window.MouseEvent('click', { bubbles: true });
await button1.dispatchEvent(event); button1.dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
` `
@ -38,7 +40,8 @@ export default test({
` `
); );
await button2.dispatchEvent(event); button2.dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
` `
@ -57,7 +60,8 @@ export default test({
` `
); );
await button3.dispatchEvent(event); button3.dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
` `

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -10,11 +11,12 @@ export default test({
</div> </div>
`, `,
async test({ assert, target, window }) { test({ assert, target, window }) {
const button = target.querySelector('button'); const button = target.querySelector('button');
ok(button); ok(button);
await button.dispatchEvent(new window.MouseEvent('click', { bubbles: true })); button.dispatchEvent(new window.MouseEvent('click', { bubbles: true }));
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,15 +1,17 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
html: ` html: `
<input> <input>
`, `,
async test({ assert, target, window }) { test({ assert, target, window }) {
const input = target.querySelector('input'); const input = target.querySelector('input');
ok(input); ok(input);
input.value = 'a'; input.value = 'a';
await input.dispatchEvent(new window.Event('input')); input.dispatchEvent(new window.Event('input'));
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -20,7 +22,8 @@ export default test({
); );
input.value = 'abc'; input.value = 'abc';
await input.dispatchEvent(new window.Event('input')); input.dispatchEvent(new window.Event('input'));
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -6,11 +7,12 @@ export default test({
<span>0</span> <span>0</span>
`, `,
async test({ assert, target, window }) { test({ assert, target, window }) {
const button = target.querySelector('button'); const button = target.querySelector('button');
const click = new window.MouseEvent('click', { bubbles: true }); const click = new window.MouseEvent('click', { bubbles: true });
await button?.dispatchEvent(click); button?.dispatchEvent(click);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -6,11 +7,12 @@ export default test({
<span>0 ()</span> <span>0 ()</span>
`, `,
async test({ assert, target, window }) { test({ assert, target, window }) {
const button = target.querySelector('button'); const button = target.querySelector('button');
const click = new window.MouseEvent('click', { bubbles: true }); const click = new window.MouseEvent('click', { bubbles: true });
await button?.dispatchEvent(click); button?.dispatchEvent(click);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -7,11 +8,12 @@ export default test({
</div> </div>
`, `,
async test({ assert, target, window }) { test({ assert, target, window }) {
const div = target.querySelector('div'); const div = target.querySelector('div');
const click = new window.MouseEvent('click', { bubbles: true }); const click = new window.MouseEvent('click', { bubbles: true });
await div?.dispatchEvent(click); div?.dispatchEvent(click);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -15,11 +16,12 @@ export default test({
<button>Increment</button> <button>Increment</button>
</div> </div>
`, `,
async test({ assert, target, window }) { test({ assert, target, window }) {
const [button1, button2, button3] = target.querySelectorAll('button'); const [button1, button2, button3] = target.querySelectorAll('button');
const event = new window.MouseEvent('click', { bubbles: true }); const event = new window.MouseEvent('click', { bubbles: true });
await button1.dispatchEvent(event); button1.dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
` `
@ -38,7 +40,8 @@ export default test({
` `
); );
await button2.dispatchEvent(event); button2.dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
` `
@ -57,7 +60,8 @@ export default test({
` `
); );
await button3.dispatchEvent(event); button3.dispatchEvent(event);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
` `

@ -1,15 +1,17 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
async test({ assert, target }) { test({ assert, target }) {
const btns = target.querySelectorAll('button'); const btns = target.querySelectorAll('button');
const event = new window.MouseEvent('click', { bubbles: true }); const event = new window.MouseEvent('click', { bubbles: true });
await btns[0].dispatchEvent(event); btns[0].dispatchEvent(event);
await btns[0].dispatchEvent(event); btns[0].dispatchEvent(event);
await btns[1].dispatchEvent(event); btns[1].dispatchEvent(event);
await btns[1].dispatchEvent(event); btns[1].dispatchEvent(event);
await btns[1].dispatchEvent(event); btns[1].dispatchEvent(event);
flushSync();
assert.equal(btns[1].innerHTML, '3'); assert.equal(btns[1].innerHTML, '3');
} }

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -14,11 +15,12 @@ export default test({
</div> </div>
`, `,
async test({ assert, target, window }) { test({ assert, target, window }) {
const button = target.querySelector('button'); const button = target.querySelector('button');
const click = new window.MouseEvent('click', { bubbles: true }); const click = new window.MouseEvent('click', { bubbles: true });
await button?.dispatchEvent(click); button?.dispatchEvent(click);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -6,11 +7,11 @@ export default test({
<div>[N] B <button>Toggle</button></div> <div>[N] B <button>Toggle</button></div>
<div>[N] C <button>Toggle</button></div> <div>[N] C <button>Toggle</button></div>
`, `,
async test({ target, assert, window }) { test({ target, assert, window }) {
const [btn1, btn2, btn3] = target.querySelectorAll('button'); const [btn1, btn2, btn3] = target.querySelectorAll('button');
await btn1.dispatchEvent(new window.MouseEvent('click', { bubbles: true })); btn1.dispatchEvent(new window.MouseEvent('click', { bubbles: true }));
await btn2.dispatchEvent(new window.MouseEvent('click', { bubbles: true })); btn2.dispatchEvent(new window.MouseEvent('click', { bubbles: true }));
await Promise.resolve(); flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -21,8 +22,8 @@ export default test({
` `
); );
await btn2.dispatchEvent(new window.MouseEvent('click', { bubbles: true })); btn2.dispatchEvent(new window.MouseEvent('click', { bubbles: true }));
await Promise.resolve(); flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -33,8 +34,8 @@ export default test({
` `
); );
await btn3.dispatchEvent(new window.MouseEvent('click', { bubbles: true })); btn3.dispatchEvent(new window.MouseEvent('click', { bubbles: true }));
await Promise.resolve(); flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -15,11 +16,12 @@ export default test({
</div> </div>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const click = new window.MouseEvent('click', { bubbles: true }); const click = new window.MouseEvent('click', { bubbles: true });
let buttons = target.querySelectorAll('button'); let buttons = target.querySelectorAll('button');
await buttons[1].dispatchEvent(click); buttons[1].dispatchEvent(click);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -54,7 +56,8 @@ export default test({
buttons = target.querySelectorAll('button'); buttons = target.querySelectorAll('button');
await buttons[1].dispatchEvent(click); buttons[1].dispatchEvent(click);
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { ok, test } from '../../test'; import { ok, test } from '../../test';
export default test({ export default test({
@ -6,13 +7,14 @@ export default test({
<p>0</p> <p>0</p>
`, `,
async test({ assert, component, target, window }) { test({ assert, component, target, window }) {
const button = target.querySelector('button'); const button = target.querySelector('button');
ok(button); ok(button);
const event = new window.MouseEvent('click', { bubbles: true }); const event = new window.MouseEvent('click', { bubbles: true });
await button.dispatchEvent(event); button.dispatchEvent(event);
flushSync();
assert.equal(component.counter, 1); assert.equal(component.counter, 1);
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
@ -22,7 +24,8 @@ export default test({
` `
); );
await button.dispatchEvent(event); button.dispatchEvent(event);
flushSync();
assert.equal(component.counter, 2); assert.equal(component.counter, 2);
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -5,9 +6,10 @@ export default test({
<button>false</button> <button>false</button>
<button>click handler marks foo as reactive</button> <button>click handler marks foo as reactive</button>
`, `,
async test({ assert, target }) { test({ assert, target }) {
const btn = target.querySelector('button'); const btn = target.querySelector('button');
await btn?.click(); btn?.click();
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,

@ -1,3 +1,4 @@
import { flushSync } from 'svelte';
import { test } from '../../test'; import { test } from '../../test';
export default test({ export default test({
@ -9,7 +10,8 @@ export default test({
async test({ assert, component, window, target }) { async test({ assert, component, window, target }) {
const button = target.querySelector('button'); const button = target.querySelector('button');
// @ts-ignore // @ts-ignore
await button.dispatchEvent(new window.Event('click')); button.dispatchEvent(new window.Event('click'));
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
` `
@ -19,7 +21,8 @@ export default test({
); );
assert.equal(component.n, 2); assert.equal(component.n, 2);
// @ts-ignore // @ts-ignore
await button.dispatchEvent(new window.Event('click')); button.dispatchEvent(new window.Event('click'));
flushSync();
assert.htmlEqual( assert.htmlEqual(
target.innerHTML, target.innerHTML,
` `

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save