mcpField
U
umbraco-testing

umbraco-testing

github.com/umbracoTesting & quality27360 installsUpdated 6w ago
Repository

About umbraco-testing

A routing skill for developers testing Umbraco backoffice extensions. It helps select among unit, mocked API, mocked backoffice, and end-to-end testing approaches, with supporting skills for test data and helpers.

Key features

  1. 01Routes tests by testing level
  2. 02Guidance for unit and MSW tests
  3. 03Guidance for mocked backoffice tests
  4. 04Guidance for end-to-end tests
  5. 05Links to test data and helper skills

Use cases

  1. 01Choosing an approach for extension logic
  2. 02Testing API errors and loading states
  3. 03Checking extension UI without .NET
  4. 04Validating full workflows against Umbraco

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/umbraco/umbraco-cms-backoffice-skills --skill umbraco-testing

After installing, type/umbraco-testingin Claude Code to confirm it loaded.

Details

From the project README

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 \
[email protected] \
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/

Comments

Markdown supported