File tree Expand file tree Collapse file tree 2 files changed +99
-0
lines changed
packages/svelte/tests/runtime-runes/samples/async-error-skipped Expand file tree Collapse file tree 2 files changed +99
-0
lines changed Original file line number Diff line number Diff line change 1+ import { flushSync , tick } from 'svelte' ;
2+ import { test } from '../../test' ;
3+
4+ export default test ( {
5+ async test ( { assert, target } ) {
6+ await Promise . resolve ( ) ;
7+
8+ assert . htmlEqual (
9+ target . innerHTML ,
10+ `
11+ <h1>a</h1>
12+ <button>a</button>
13+ <button>b</button>
14+ <button>c</button>
15+ <button>ok</button>
16+ <p>a</p>
17+ `
18+ ) ;
19+
20+ const [ a , b , c , ok ] = target . querySelectorAll ( 'button' ) ;
21+
22+ flushSync ( ( ) => b . click ( ) ) ;
23+ await Promise . resolve ( ) ;
24+ await Promise . resolve ( ) ;
25+
26+ assert . htmlEqual (
27+ target . innerHTML ,
28+ `
29+ <h1>c</h1>
30+ <button>a</button>
31+ <button>b</button>
32+ <button>c</button>
33+ <button>ok</button>
34+ <p>c</p>
35+ `
36+ ) ;
37+
38+ flushSync ( ( ) => ok . click ( ) ) ;
39+
40+ flushSync ( ( ) => b . click ( ) ) ;
41+ await Promise . resolve ( ) ;
42+ await Promise . resolve ( ) ;
43+
44+ assert . htmlEqual (
45+ target . innerHTML ,
46+ `
47+ <h1>b</h1>
48+ <button>a</button>
49+ <button>b</button>
50+ <button>c</button>
51+ <button>ok</button>
52+ <p>b</p>
53+ `
54+ ) ;
55+ }
56+ } ) ;
Original file line number Diff line number Diff line change 1+ <script lang =ts >
2+ let route = $state (' a' );
3+ let ok = $state (false );
4+
5+ function goto(r ) {
6+ return Promise .resolve ().then (() => {
7+ route = r ;
8+ throw new Error (' nope' );
9+ });
10+ }
11+ </script >
12+
13+ <h1 >{route }</h1 >
14+ <button onclick ={() => route = ' a' }>a</button >
15+ <button onclick ={() => route = ' b' }>b</button >
16+ <button onclick ={() => route = ' c' }>c</button >
17+ <button onclick ={() => ok = true }>ok</button >
18+
19+ <svelte:boundary >
20+ {#if route === ' a' }
21+ <p >a</p >
22+ {/if }
23+
24+ {#if route === ' b' }
25+ {#if ok }
26+ <p >b</p >
27+ {:else }
28+ {await goto (' c' )}
29+ {/if }
30+ {/if }
31+
32+ {#if route === ' c' }
33+ <p >c</p >
34+ {/if }
35+
36+ {#snippet pending ()}
37+ <p >pending...</p >
38+ {/ snippet }
39+
40+ {#snippet failed (error , reset )}
41+ <button onclick ={reset }>retry</button >
42+ {/ snippet }
43+ </svelte:boundary >
You can’t perform that action at this time.
0 commit comments