mirror of https://github.com/sveltejs/svelte
				
				
				
			
							parent
							
								
									18b902344c
								
							
						
					
					
						commit
						364f45a08e
					
				@ -0,0 +1,51 @@
 | 
				
			|||||||
 | 
					import { tick } from 'svelte';
 | 
				
			||||||
 | 
					import { deferred } from '../../../../src/internal/shared/utils.js';
 | 
				
			||||||
 | 
					import { test } from '../../test';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** @type {ReturnType<typeof deferred>} */
 | 
				
			||||||
 | 
					let d;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default test({
 | 
				
			||||||
 | 
						html: `<p>pending</p>`,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						get props() {
 | 
				
			||||||
 | 
							d = deferred();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return {
 | 
				
			||||||
 | 
								promise: d.promise
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						async test({ assert, target, component }) {
 | 
				
			||||||
 | 
							d.resolve(1);
 | 
				
			||||||
 | 
							await Promise.resolve();
 | 
				
			||||||
 | 
							await Promise.resolve();
 | 
				
			||||||
 | 
							await Promise.resolve();
 | 
				
			||||||
 | 
							await tick();
 | 
				
			||||||
 | 
							assert.htmlEqual(target.innerHTML, '<h1>hello</h1>');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							const h1 = target.querySelector('h1');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							d = deferred();
 | 
				
			||||||
 | 
							component.promise = d.promise;
 | 
				
			||||||
 | 
							await tick();
 | 
				
			||||||
 | 
							assert.htmlEqual(target.innerHTML, '<p>pending</p>');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							d.resolve(1);
 | 
				
			||||||
 | 
							await Promise.resolve();
 | 
				
			||||||
 | 
							await tick();
 | 
				
			||||||
 | 
							assert.htmlEqual(target.innerHTML, '<h1>hello</h1>');
 | 
				
			||||||
 | 
							assert.equal(target.querySelector('h1'), h1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							d = deferred();
 | 
				
			||||||
 | 
							component.promise = d.promise;
 | 
				
			||||||
 | 
							await tick();
 | 
				
			||||||
 | 
							assert.htmlEqual(target.innerHTML, '<p>pending</p>');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							d.resolve(2);
 | 
				
			||||||
 | 
							await Promise.resolve();
 | 
				
			||||||
 | 
							await tick();
 | 
				
			||||||
 | 
							assert.htmlEqual(target.innerHTML, '<h1>hello</h1>');
 | 
				
			||||||
 | 
							assert.notEqual(target.querySelector('h1'), h1);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					<script>
 | 
				
			||||||
 | 
						let { promise } = $props();
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<svelte:boundary>
 | 
				
			||||||
 | 
						{#key await promise}
 | 
				
			||||||
 | 
							<h1>hello</h1>
 | 
				
			||||||
 | 
						{/key}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						{#snippet pending()}
 | 
				
			||||||
 | 
							<p>pending</p>
 | 
				
			||||||
 | 
						{/snippet}
 | 
				
			||||||
 | 
					</svelte:boundary>
 | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue