svelte-testing

star 109

Fix and create Svelte 5 tests with vitest-browser-svelte and Playwright. Use when fixing broken tests, debugging failures, writing unit/SSR/e2e tests, or working with vitest/Playwright.

spences10 By spences10 schedule Updated 11/10/2025

name: svelte-testing

prettier-ignore

description: Fix and create Svelte 5 tests with vitest-browser-svelte and Playwright. Use when fixing broken tests, debugging failures, writing unit/SSR/e2e tests, or working with vitest/Playwright.

Svelte Testing

Quick Start

// Client-side component test (.svelte.test.ts)
import { render } from 'vitest-browser-svelte';
import { expect } from 'vitest';
import Button from './button.svelte';

test('button click increments counter', async () => {
    const { page } = render(Button);
    const button = page.getByRole('button', { name: /click me/i });

    await button.click();
    await expect.element(button).toHaveTextContent('Clicked: 1');
});

Core Principles

  • Always use locators: page.getBy*() methods, never containers
  • Multiple elements: Use .first(), .nth(), .last() to avoid strict mode violations
  • Use untrack(): When accessing $derived values in tests
  • Real API objects: Test with FormData/Request, minimal mocking

Reference Files

Notes

  • Never click SvelteKit form submit buttons - Always use await expect.element()
  • Test files: .svelte.test.ts (client), .ssr.test.ts (SSR), server.test.ts (API)
Install via CLI
npx skills add https://github.com/spences10/sveltest --skill svelte-testing
Repository Details
star Stars 109
call_split Forks 6
navigation Branch main
article Path SKILL.md
More from Creator