Vitest
supabase/supabase
Vitest API and config reference (Jest-compatible) — mocking with vi., spies, fake timers, coverage configuration, fixtures, snapshots, and test filtering.
Guides writing and maintaining Vitest unit tests for the bootc extension's backend, frontend, and shared packages.
$ npx skills add podman-desktop/extension-bootc --skill unit-testing -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install podman-desktop/extension-bootc unit-testing --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/podman-desktop/extension-bootc.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/unit-testing .claude/skills/unit-testing && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "unit-testing" agent skill from https://github.com/podman-desktop/extension-bootc/tree/main/.agents/skills/unit-testing into .claude/skills/unit-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unit-testing", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/podman-desktop/extension-bootc/tree/main/.agents/skills/unit-testingType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add podman-desktop/extension-bootc --skill unit-testing -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install podman-desktop/extension-bootc unit-testing --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/podman-desktop/extension-bootc.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/unit-testing .agents/skills/unit-testing && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "unit-testing" agent skill from https://github.com/podman-desktop/extension-bootc/tree/main/.agents/skills/unit-testing into .agents/skills/unit-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unit-testing", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add podman-desktop/extension-bootc --skill unit-testing -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install podman-desktop/extension-bootc unit-testing --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/podman-desktop/extension-bootc.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/unit-testing .cursor/skills/unit-testing && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "unit-testing" agent skill from https://github.com/podman-desktop/extension-bootc/tree/main/.agents/skills/unit-testing into .cursor/skills/unit-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unit-testing", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/podman-desktop/extension-bootc.git --path .agents/skills/unit-testing--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add podman-desktop/extension-bootc --skill unit-testing -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install podman-desktop/extension-bootc unit-testing --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/podman-desktop/extension-bootc.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/unit-testing .gemini/skills/unit-testing && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "unit-testing" agent skill from https://github.com/podman-desktop/extension-bootc/tree/main/.agents/skills/unit-testing into .gemini/skills/unit-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unit-testing", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install podman-desktop/extension-bootc unit-testingInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add podman-desktop/extension-bootc --skill unit-testing -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/podman-desktop/extension-bootc.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/unit-testing .github/skills/unit-testing && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "unit-testing" agent skill from https://github.com/podman-desktop/extension-bootc/tree/main/.agents/skills/unit-testing into .github/skills/unit-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unit-testing", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add podman-desktop/extension-bootc --skill unit-testing -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install podman-desktop/extension-bootc unit-testing --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/podman-desktop/extension-bootc.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/unit-testing .opencode/skills/unit-testing && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "unit-testing" agent skill from https://github.com/podman-desktop/extension-bootc/tree/main/.agents/skills/unit-testing into .opencode/skills/unit-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unit-testing", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
unit-testingGuides writing and maintaining Vitest unit tests for the bootc extension's backend, frontend, and shared packages.
Unit Testing is an agent skill from podman-desktop/extension-bootc. Guides writing and maintaining Vitest unit tests for the bootc extension's backend, frontend, and shared packages. Covers mocking @podman-desktop/api, RPC clients, Svelte stores, and Node.js modules. Triggers when creating or modifying .spec.ts files, fixing Vitest failures, or adding test coverage.
Its SKILL.md is about 1.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Testing & QA, covering Unit testing. It works with Svelte, Node.js, Vitest and Vite. The repository describes itself as: Support for bootable OS containers (bootc) and generating disk images. The licence is Apache-2.0.
Read from SKILL.md and the folder at commit 4230bcf. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
pnpmnpxFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pnpm and npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Unit Testing loads about 1.4k tokens when it runs. Until then it costs about 78 tokens; SKILL.md has 198 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from podman-desktop/extension-bootc at commit 4230bcf, republished under its Apache-2.0 licence (© podman-desktop). 198 words, ~1,446 tokens.
.claude/skills/unit-testing/SKILL.md (or your agent's skills folder).@podman-desktop/api@testing-library/svelte for componentspnpm test # all packages
pnpm test:backend # packages/backend with coverage
pnpm test:frontend # packages/frontend with coverage
pnpm test:shared # packages/shared with coverage
# Single file
npx vitest run packages/backend/src/build-disk-image.spec.ts
# Watch mode
npx vitest watch packages/backend/src/The backend's vite.config.js aliases @podman-desktop/api to a mock file.
Mock only the namespaces your test actually uses:
import { vi, test, expect, beforeEach, describe } from 'vitest';
import * as extensionApi from '@podman-desktop/api';
vi.mock('@podman-desktop/api', async () => ({
// Mock only what your test needs — check existing tests for patterns:
// grep -l "vi.mock('@podman-desktop/api'" packages/backend/src/*.spec.ts
}));To see the full mock shape used in existing tests:
grep -A 30 "vi.mock('@podman-desktop/api'" packages/backend/src/*.spec.ts | head -60import { describe, test, expect, vi, beforeEach } from 'vitest';
import { buildDiskImage } from './build-disk-image';
vi.mock('@podman-desktop/api');
vi.mock('./container-utils');
vi.mock('./history');
beforeEach(() => {
vi.clearAllMocks();
});
describe('buildDiskImage', () => {
test('should create build container with correct volumes', async () => {
// Arrange
const buildInfo = {
id: 'test-id',
image: 'quay.io/test/image',
tag: 'latest',
type: ['qcow2'] as BuildType[],
folder: '/output',
// ...
};
// Act
await buildDiskImage(buildInfo);
// Assert
expect(containerEngine.createContainer).toHaveBeenCalledWith(
expect.anything(),
expect.objectContaining({
Image: expect.stringContaining('bootc-image-builder'),
}),
);
});
});import { vi } from 'vitest';
vi.mock('node:fs', async () => ({
promises: {
mkdir: vi.fn(),
readFile: vi.fn(),
writeFile: vi.fn(),
},
existsSync: vi.fn(),
}));
vi.mock('node:child_process', async () => ({
exec: vi.fn(),
}));import { vi, test, expect, beforeEach } from 'vitest';
import { render, screen, fireEvent } from '@testing-library/svelte';
import '@testing-library/jest-dom/vitest';
import MyComponent from './MyComponent.svelte';
// Mock the RPC client
vi.mock('/@/api/client', async () => ({
bootcClient: {
listBootcImages: vi.fn().mockResolvedValue([]),
buildImage: vi.fn(),
},
rpcBrowser: {
subscribe: vi.fn().mockReturnValue({ unsubscribe: vi.fn() }),
},
}));
test('renders heading', async () => {
render(MyComponent, { props: { imageName: 'test' } });
expect(screen.getByText('Build Disk Image')).toBeInTheDocument();
});
test('clicking build button triggers build', async () => {
render(MyComponent);
const buildButton = screen.getByRole('button', { name: 'Build' });
await fireEvent.click(buildButton);
expect(bootcClient.buildImage).toHaveBeenCalled();
});import { vi } from 'vitest';
import { readable } from 'svelte/store';
vi.mock('/@/stores/imageInfo', async () => ({
imageInfos: readable([{ Id: 'abc123', RepoTags: ['quay.io/test:latest'], Labels: { 'containers.bootc': '' } }]),
}));Frontend tests resolve /@/ to packages/frontend/src/ and /@shared/ to
packages/shared/ via Vite config. Use these aliases in mocks:
vi.mock('/@/api/client'); // → packages/frontend/src/api/client
vi.mock('/@shared/src/models/bootc'); // → packages/shared/src/models/bootcimport { test, expect, vi } from 'vitest';
import { RpcBrowser, RpcExtension } from './MessageProxy';
test('RPC call resolves with result', async () => {
// Test the RPC proxy mechanism
});*.spec.ts colocated with source filesbuild-disk-image.ts → build-disk-image.spec.tsCoverage reports are generated in lcov and text format:
pnpm test:backend # generates packages/backend/coverage/
pnpm test:frontend # generates packages/frontend/coverage/The mock alias is configured in packages/backend/vite.config.js. If you see
this error, ensure the test file is being run from the correct package.
The test environment needs the Svelte vite plugin. Frontend tests use the
config from packages/frontend/vite.config.js which includes @sveltejs/vite-plugin-svelte.
Frontend tests retry failed tests 2x (configured in packages/frontend/vite.config.js).
Backend tests do not retry.
© podman-desktop, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/unit-testing of podman-desktop/extension-bootc.
Open the folder on GitHubat commit 4230bcf
Unit Testing next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Unit Testing this skillpodman-desktop/extension-bootc | 474 | — | ~1.4k | Automated safety check: Pass | Apache-2.0 | |
| Vitestsupabase/supabase | 111k | 12 repos | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Svelte Testingspences10/sveltest | 113 | — | ~579 | Automated safety check: Pass | MIT | |
| Test Coveragescott-fryxell/brayness | 124 | — | ~1.6k | Automated safety check: Pass | MIT | |
| Frontend Testingnightscout/nocturne | 139 | — | ~1.7k | Automated safety check: Pass | None | |
| Testing Livekit Agentslivekit-examples/agent-starter-python | 264 | 1 repos | ~1.9k | Automated safety check: Pass | MIT |
supabase/supabase
Vitest API and config reference (Jest-compatible) — mocking with vi., spies, fake timers, coverage configuration, fixtures, snapshots, and test filtering.
spences10/sveltest
Fix and create Svelte 5 tests with vitest-browser-svelte and Playwright.
scott-fryxell/brayness
Write Vitest specs for Vue 3 JavaScript (Vite Plus, happy-dom, @vue/test-utils) and analyze V8 coverage + Fallow health to prioritize test-first refactors.
nightscout/nocturne
A skill your agent uses when writing, editing, or reviewing frontend tests in the Nocturne Web app (src/Web/packages/app).
livekit-examples/agent-starter-python
Writes turn-level tests for a LiveKit agent in the user's normal test suite: pytest (Python) or Vitest (Node.js).
DanielPodolsky/ownyourcode
Guides test strategy for unit, integration, and E2E testing.
podman-desktop/extension-bootc
Guides backend development with @podman-desktop/api and the bootc extension's RPC system.
podman-desktop/extension-bootc
Guides end-to-end feature development in the bootc Podman Desktop extension.
podman-desktop/extension-bootc
Guides writing and maintaining Playwright E2E tests for the bootc Podman Desktop extension.
podman-desktop/extension-bootc
Guides designing and building Svelte 5 UI components in the bootc extension.
Categories
Guides writing and maintaining Vitest unit tests for the bootc extension's backend, frontend, and shared packages. Unit Testing is an agent skill from podman-desktop/extension-bootc. Guides writing and maintaining Vitest unit tests for the bootc extension's backend, frontend, and shared packages.
Unit Testing fits situations like: modifying .spec.ts files; fixing Vitest failures; adding test coverage.
Run `npx skills add podman-desktop/extension-bootc --skill unit-testing -a claude-code`. Or copy the skill folder (.agents/skills/unit-testing in podman-desktop/extension-bootc) into .claude/skills/unit-testing in your project. Claude Code loads it when a task matches its description.
Run `npx skills add podman-desktop/extension-bootc --skill unit-testing -a codex`. Or copy the skill folder (.agents/skills/unit-testing in podman-desktop/extension-bootc) into .agents/skills/unit-testing in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add podman-desktop/extension-bootc --skill unit-testing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/unit-testing, .gemini/skills/unit-testing, .github/skills/unit-testing and .opencode/skills/unit-testing in your project.
Going by SKILL.md and its folder, Unit Testing needs the command-line tools its instructions call (pnpm and npx). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Unit Testing is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.4k tokens (SKILL.md is roughly 5.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Unit Testing: Vitest (supabase/supabase, 111k stars), Svelte Testing (spences10/sveltest, 113 stars), Test Coverage (scott-fryxell/brayness, 124 stars) and Frontend Testing (nightscout/nocturne, 139 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
podman-desktop (a GitHub organization) maintains it in podman-desktop/extension-bootc, which has 474 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 8, 2026.
Source: podman-desktop/extension-bootc on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.