Skip to content
Back to skills

Create Integration Test

ASecurity

Turn a [class]-integration-test-plan.md into headless integration tests, one per plan item, each driving the scenario, asserting the outcome, and capturing a labeled snapshot. Use for TDD before implementation or as verification after it, whenever a test plan exists under Docs/migration/working/.

  • 111 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 3, 2026
testingtesting

Security analysis

A100/100

Scanned September 3, 2026

npx -y skills add sillsdev/FieldWorks --skill create-integration-test --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Create Integration Test?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Create Integration Test
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/sillsdev-create-integration-test/badge)](https://www.skillsdirectory.com/skills/sillsdev-create-integration-test)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: create-integration-test
description: Turn a [class]-integration-test-plan.md into headless integration tests, one per plan item, each driving the scenario, asserting the outcome, and capturing a labeled snapshot. Use for TDD before implementation or as verification after it, whenever a test plan exists under Docs/migration/working/.
---

# Create Integration Test

Consumes the test plan a convert-* skill produced with the developer and
turns it into real tests, one plan item at a time. Plans exist for
dialogs, slices, AND owned controls (a control converted through the
custom-control sub-cycle gets its own plan under its own class name).

Input: the class name (or find the single plan when only one exists).
Plan location: `Docs/migration/working/<Class>/<Class>-integration-test-plan.md`.
If no plan exists, stop and say so -- the plan is authored with the
developer in the convert-* flow, never invented here.

## What each plan item becomes

One headless `[AvaloniaTest]` that:

1. **Drives** the scenario with the headless input pipeline (typing, focus,
   commands) from a constructed dialog/control in the state the item names.
2. **Asserts** the behavioral outcome in code -- this is the pass/fail gate
   (enabled state, staged value, validation message, payload content).
3. **Captures** a labeled snapshot as reviewable evidence
   (`DialogSnapshot.Capture`, name `<Class>-NN-<kebab-label>` numbered in
   plan order). Snapshots document; assertions gate.

Known headless limit: pointer hit-testing does not run headless. A plan item
that genuinely requires mouse interaction is implemented as far as the
model/keyboard path allows and flagged in the report as needing the manual
checkpoint.

## Where tests land

Derive the location from the SUT by the repository's test-mirroring rule
(tests mirror their SUT's project and subfolder):

- Dialog View/ViewModel (`Src/Common/FwAvaloniaDialogs/`, flat) ->
  `FwAvaloniaDialogsTests/<Class>IntegrationTests.cs`
- Owned control in `Src/Common/FwAvaloniaDialogs/Controls/` (dialog
  composite) -> `FwAvaloniaDialogsTests/Controls/`; owned control in
  `Src/Common/FwAvalonia/` (shared) -> the `FwAvaloniaTests/` mirror of its
  subfolder
- Launcher edge (`Src/LexText/LexTextControls/Avalonia/`) ->
  `LexTextControlsTests/Avalonia/`
- Slice control (`Src/Common/FwAvalonia/Detail/`) ->
  `FwAvaloniaTests/Detail/` (create the folder on first use)
- Composer wiring (`Src/xWorks/Avalonia/Composer/`) ->
  `xWorksTests/Avalonia/Composer/`

## Process

Work the plan top to bottom, one item at a time: write the test, run it,
and record the result against the plan item (passing, failing-as-expected
for TDD, or blocked-needs-manual). Keep generated code to the repository
comment standard. When the plan is exhausted, run the owning suite in full
and report: items implemented, items flagged manual-only, suite counts, and
any plan item whose wording did not survive contact with the code (report
it back for the developer to re-decide -- do not silently reinterpret).

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…