Skip to content

Commit 7bab116

Browse files
authored
test(transitions): add on:introend test (#311)
test(transitions): add on:introend test
1 parent 54ea8fa commit 7bab116

File tree

3 files changed

+49
-0
lines changed

3 files changed

+49
-0
lines changed

Diff for: package.json

+1
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272
"devDependencies": {
7373
"@sveltejs/vite-plugin-svelte": "^2.4.2",
7474
"@testing-library/jest-dom": "^6.3.0",
75+
"@testing-library/user-event": "^14.5.2",
7576
"@typescript-eslint/eslint-plugin": "6.19.1",
7677
"@typescript-eslint/parser": "6.19.1",
7778
"@vitest/coverage-v8": "^0.33.0",

Diff for: src/__tests__/fixtures/Transitioner.svelte

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<script>
2+
import { blur } from 'svelte/transition'
3+
4+
let show = false
5+
let introDone = false
6+
</script>
7+
8+
<button on:click={() => (show = true)}>Show</button>
9+
10+
{#if show}
11+
<div in:blur={{ duration: 64 }} on:introend={() => (introDone = true)}>
12+
{#if introDone}
13+
<p data-testid="intro-done">Done</p>
14+
{:else}
15+
<p data-testid="intro-pending">Pending</p>
16+
{/if}
17+
</div>
18+
{/if}

Diff for: src/__tests__/transition.test.js

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { userEvent } from '@testing-library/user-event'
2+
import { beforeEach, describe, expect, test, vi } from 'vitest'
3+
4+
import { render, screen, waitFor } from '..'
5+
import Transitioner from './fixtures/Transitioner.svelte'
6+
7+
describe('transitions', () => {
8+
beforeEach(() => {
9+
if (window.navigator.userAgent.includes('jsdom')) {
10+
const raf = (fn) => setTimeout(() => fn(new Date()), 16)
11+
vi.stubGlobal('requestAnimationFrame', raf)
12+
}
13+
})
14+
15+
test('on:introend', async () => {
16+
const user = userEvent.setup()
17+
18+
render(Transitioner)
19+
const start = screen.getByRole('button')
20+
await user.click(start)
21+
22+
const pending = screen.getByTestId('intro-pending')
23+
expect(pending).toBeInTheDocument()
24+
25+
await waitFor(() => {
26+
const done = screen.queryByTestId('intro-done')
27+
expect(done).toBeInTheDocument()
28+
})
29+
})
30+
})

0 commit comments

Comments
 (0)