Agent SkillsAgent Skills
umbraco

umbraco-testing

@umbraco/umbraco-testing
umbraco
18
5 forks
Updated 3/31/2026
View on GitHub

Router skill for choosing the right testing approach for Umbraco backoffice extensions

Installation

$npx agent-skills-cli install @umbraco/umbraco-testing
Claude Code
Cursor
Copilot
Codex
Antigravity

Details

Pathplugins/umbraco-testing-skills/skills/umbraco-testing/SKILL.md
Branchmain
Scoped Name@umbraco/umbraco-testing

Usage

After installing, this skill will be available to your AI coding assistant.

Verify installation:

npx agent-skills-cli list

Skill Instructions


name: umbraco-testing description: Router skill for choosing the right testing approach for Umbraco backoffice extensions version: 1.0.0 location: managed allowed-tools: Read, Write, Edit, WebFetch

Umbraco Testing - Router

Entry point for testing Umbraco backoffice extensions. Use this skill to determine which testing approach to use, then invoke the appropriate specialized skill.

Quick Reference

LevelSkillUse When
1umbraco-unit-testingTesting contexts, elements, controllers in isolation
2umbraco-msw-testingTesting API error handling, loading states
3umbraco-mocked-backofficeTesting extension UI in full backoffice (no .NET)
4umbraco-e2e-testingTesting complete workflows against real Umbraco

Supporting Skills

SkillPurpose
umbraco-test-buildersJsonModels.Builders for test data
umbraco-playwright-testhelpersFull API reference for testhelpers
umbraco-example-generatorGenerate testable example extensions

Decision Guide

Choose Unit Testing (umbraco-unit-testing)

Best for fast, isolated testing:

  • Context logic and state management
  • Lit element rendering and shadow DOM
  • Observable subscriptions and state changes
  • Controllers and utility functions

Speed: Milliseconds | Backend: None | Browser: Playwright launcher


Choose MSW Testing (umbraco-msw-testing)

Best for testing API behavior without backend:

  • API error handling (404, 500, validation)
  • Loading spinners and skeleton states
  • Network retry behavior
  • Response edge cases and timeouts

Speed: Fast | Backend: None (mocked) | Browser: Playwright


Choose Mocked Backoffice (umbraco-mocked-backoffice)

Best for testing extensions in realistic UI:

  • Extension appears correctly in backoffice
  • Workspace views, actions, footer apps work
  • Extension registration and manifest loading
  • Visual integration without .NET setup

Speed: Fast | Backend: None (MSW) | Browser: Chromium


Choose E2E Testing (umbraco-e2e-testing)

Best for full acceptance testing:

  • Complete user workflows end-to-end
  • Data persistence and retrieval
  • Authentication and permissions
  • Real API responses and behaviors

Speed: Slower | Backend: Running Umbraco | Browser: Chromium


Workflow

  1. Identify what to test - context logic, element rendering, API handling, or full workflow
  2. Choose testing level - use the decision guide above
  3. Invoke the skill - each testing skill is self-contained with setup, patterns, and examples
  4. Generate test data - use umbraco-test-builders if needed

Complete Testing Pyramid

A well-tested extension uses multiple testing levels. Here's the complete pyramid:

                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚   E2E Tests β”‚  ← Real backend, complete workflows
                    β”‚   (7 tests) β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
              β”‚   Mocked Backoffice     β”‚  ← No backend, realistic UI
              β”‚   MSW: 6 | Mock Repo: 6 β”‚
              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚           Unit Tests                β”‚  ← Fast, isolated
        β”‚           (13 tests)                β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Test Count by Level

LevelTestsSpeedBackend Required
Unit13~1sNone
MSW Mocked6~30sNone (MSW)
Mock Repository6~37sNone
E2E7~15sReal Umbraco
Total32

Working Example: tree-example

The tree-example demonstrates all testing approaches in one project:

cd /path/to/tree-example/Client

# Unit tests (fast, no server)
npm test                        # 13 tests, ~1s

# MSW mocked tests (requires mocked backoffice)
npm run test:mocked:msw         # 6 tests, ~30s

# Mock repository tests (requires mocked backoffice)
npm run test:mocked:repo        # 6 tests, ~37s

# E2E tests (requires real Umbraco)
URL=https://localhost:44325 \
UMBRACO_USER_LOGIN=admin@example.com \
UMBRACO_USER_PASSWORD=yourpassword \
npm run test:e2e                # 7 tests, ~15s

Location: umbraco-backoffice/examples/tree-example/Client/


Reference Examples

The Umbraco-CMS repository contains extensive test examples:

TypeLocation
Unit testssrc/Umbraco.Web.UI.Client/examples/*/
MSW handlerssrc/Umbraco.Web.UI.Client/src/mocks/handlers/
E2E teststests/Umbraco.Tests.AcceptanceTest/tests/
Extensionssrc/Umbraco.Web.UI.Client/examples/ (27 examples)
Complete pyramidumbraco-backoffice/examples/tree-example/Client/