# Write Xaml Tests

> Creates XAML unit tests for GitHub issues in the Controls.Xaml.UnitTests project. Tests XAML parsing, compilation (XamlC), and source generation. Use when testing XAML-specific behavior, not UI interactions.

- Skill: `tomevault-io/write-xaml-tests` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/write-xaml-tests`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/write-xaml-tests/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/write-xaml-tests

---


# Write XAML Tests Skill

Creates XAML unit tests that verify XAML parsing, XamlC compilation, and source generation behavior.

## When to Use

- ✅ Testing XAML parsing/inflation behavior
- ✅ Testing XamlC (IL generation) correctness
- ✅ Testing Source Generator output
- ✅ XAML-specific bugs (bindings, markup extensions, x:Name, etc.)

## When NOT to Use

- ❌ Testing UI interactions or visual behavior → Use `write-ui-tests` skill
- ❌ Testing runtime behavior after page loads → Use `write-ui-tests` skill
- ❌ Testing platform-specific rendering → Use `write-ui-tests` skill

## Required Input

Before invoking, ensure you have:
- **Issue number** (e.g., 12345)
- **Issue description** - what XAML behavior is broken
- **Expected vs actual behavior**

## Workflow

### Step 1: Read the XAML Unit Test Guidelines

```bash
cat .github/instructions/xaml-unittests.instructions.md
```

This contains the authoritative conventions for:
- File naming (`MauiXXXXX.xaml` and `MauiXXXXX.xaml.cs`)
- File location (`src/Controls/tests/Xaml.UnitTests/Issues/`)
- Test patterns with `[Values] XamlInflator`
- XamlC testing with `MockCompiler`
- Source Generator testing with `MockSourceGenerator`
- Special file extensions for invalid codegen (`.rt.xaml`, `.rtsg.xaml`, `.rtxc.xaml`)

### Step 2: Create Test Files

Following the conventions from Step 1, create:
- `src/Controls/tests/Xaml.UnitTests/Issues/MauiXXXXX.xaml`
- `src/Controls/tests/Xaml.UnitTests/Issues/MauiXXXXX.xaml.cs`

### Step 3: Verify Tests Compile and Run

```bash
# Build the test project
dotnet build src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj -c Debug --no-restore -v q

# Run specific test
dotnet test src/Controls/tests/Xaml.UnitTests/Controls.Xaml.UnitTests.csproj --filter "FullyQualifiedName~MauiXXXXX" --no-build
```

### Step 4: Verify Test Behavior

- **For bug reproduction tests**: Tests should FAIL before fix, PASS after fix
- **For regression tests**: Tests should PASS to confirm behavior works

## Output

After completion, report:

```markdown
✅ XAML unit test created for Issue #XXXXX

**Files:**
- `src/Controls/tests/Xaml.UnitTests/Issues/MauiXXXXX.xaml`
- `src/Controls/tests/Xaml.UnitTests/Issues/MauiXXXXX.xaml.cs`

**Test method:** `DescriptiveTestName`
**Inflators tested:** Runtime, XamlC, SourceGen
**Verification:** Tests [PASS/FAIL] as expected
```

## References

- **Full conventions:** `.github/instructions/xaml-unittests.instructions.md`
- **Test project:** `src/Controls/tests/Xaml.UnitTests/`
- **Existing issue tests:** `src/Controls/tests/Xaml.UnitTests/Issues/`

---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/dotnet) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-11 -->

