Source profileQuality 94/100

AI-Unified-Process/marketplace/aiup-vaadin-jooq/skills/karibu-test/SKILL.md

karibu-test

Creates Karibu server-side unit tests for Vaadin views covering navigation, component interactions, form validation, grid operations, and notifications. Use when the user asks to "write Karibu tests", "unit test a Vaadin view", "test the UI server-side", "create view tests", or mentions Karibu testing, Vaadin unit tests, or server-side UI testing.

Source repository stars
106
Declared platforms
0
Static risk flags
0
Last source update
2026-08-04
Source checked
2026-08-04

Decision brief

What it does—and where it fits

Legacy skill — no longer recommended for new code. Since Vaadin 25.1 the official Vaadin Browserless Testing framework (com.vaadin:browserless-test-junit6) is free and open source under Apache 2.0. It supersedes the community Karibu Testing library. Prefer /browserless-test for…

Best for

  • Use when the user asks to "write Karibu tests", "unit test a Vaadin view", "test the UI server-side", "create view tests", or mentions Karibu testing, Vaadin unit tests, or server-side UI testing.

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/AI-Unified-Process/marketplace --skill "aiup-vaadin-jooq/skills/karibu-test"
Safe inspection promptEditorial

Inspect the Agent Skill "karibu-test" from https://github.com/AI-Unified-Process/marketplace/blob/4d073197a39f3b79b7aae9ee5407c00a8f6e1975/aiup-vaadin-jooq/skills/karibu-test/SKILL.md at commit 4d073197a39f3b79b7aae9ee5407c00a8f6e1975. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Instructions

    Create Karibu unit tests for Vaadin views based on the use case $ARGUMENTS. Karibu Testing allows server-side testing of Vaadin components without a browser.

    Create Karibu unit tests for Vaadin views based on the use case $ARGUMENTS. Karibu Testing allows server-side testing of Vaadin components without a browser.If the KaribuTesting MCP server (https://karibu-testing-mcp.martinelli.ch/mcp) is configured, use it for documentation and code generation; otherwise rely on your own knowledge and the documentation links below. See the…
  2. 02

    Usage on test methods

    Annotate each test method with the use case ID and (when applicable) the scenario and business rules it covers. The values must match headings in the corresponding UC-XXX-.md spec:

    Annotate each test method with the use case ID and (when applicable) the scenario and business rules it covers. The values must match headings in the corresponding UC-XXX-.md spec:
  3. 03

    Workflow

    1. Read the use case specification (docs/use-cases/UC-XXX-.md) to identify the main success scenario, alternative flows (A1, A2, …), and referenced business rules (BR-XXX) 2. Check whether a UseCase annotation type already exists in the project. If not, create UseCase.java with…

    Read the use case specification (docs/use-cases/UC-XXX-.md) to identify the main successCheck whether a UseCase annotation type already exists in the project. If not, createLook for an existing test class for this use case. If there is one, follow "If Tests for This
  4. 04

    If Tests for This Use Case Already Exist

    A diff of the specification change may follow the file path in the arguments. When it is there, it is the definitive list of what changed — work through it change by change. A removed line means the scenario it described was dropped: delete the tests that exist only for it inste…

    Add test methods for scenarios and business rules the spec has gained since the tests were writtenUpdate existing test methods whose expected values, labels, component captions, or flows the specDelete tests for scenarios the spec no longer contains
  5. 05

    Test Class Naming and @UseCase Annotation

    Karibu tests are use case tests. Each test class verifies the behavior of exactly one use case from the use case specification (docs/use-cases/UC-XXX-.md).

    Karibu tests are use case tests. Each test class verifies the behavior of exactly one use case from the use case specification (docs/use-cases/UC-XXX-.md).Test classes must be named after the use case using the pattern UCTest — for example UC001RegisterPersonTest for use case UC-001 "Register Person". This is the convention the AIUP IntelliJ Navigator plugin relies on to…Every test method must be annotated with @UseCase(id = "UC-XXX", ...) so the AIUP IntelliJ Navigator plugin can wire up gutter icons and Find Usages between the Markdown spec and the Java tests.

Permission review

Static risk signals and limitations

No configured static risk pattern was detected

This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score94/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars106SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
AI-Unified-Process/marketplace
Skill path
aiup-vaadin-jooq/skills/karibu-test/SKILL.md
Commit
4d073197a39f3b79b7aae9ee5407c00a8f6e1975
License
Apache-2.0
Collected
2026-08-04
Default branch
main
View the original SKILL.md

Karibu Test

Legacy skill — no longer recommended for new code. Since Vaadin 25.1 the official Vaadin Browserless Testing framework (com.vaadin:browserless-test-junit6) is free and open source under Apache 2.0. It supersedes the community Karibu Testing library. Prefer /browserless-test for new test classes. Use this skill only when extending an existing Karibu-based test suite.

Instructions

Create Karibu unit tests for Vaadin views based on the use case $ARGUMENTS. Karibu Testing allows server-side testing of Vaadin components without a browser.

If the KaribuTesting MCP server (https://karibu-testing-mcp.martinelli.ch/mcp) is configured, use it for documentation and code generation; otherwise rely on your own knowledge and the documentation links below. See the MCP setup rule to configure this optional server.

If Tests for This Use Case Already Exist

A diff of the specification change may follow the file path in the arguments. When it is there, it is the definitive list of what changed — work through it change by change. A removed line means the scenario it described was dropped: delete the tests that exist only for it instead of keeping them as passing extras.

Before writing new tests, look for an existing test class for this use case — search for UC<id>*Test and for methods annotated @UseCase(id = "UC-XXX"). If one exists, update it to match the current specification instead of creating a second test class:

  • Add test methods for scenarios and business rules the spec has gained since the tests were written
  • Update existing test methods whose expected values, labels, component captions, or flows the spec has changed
  • Delete tests for scenarios the spec no longer contains
  • Leave passing tests the spec still requires untouched
  • Update the test data (Flyway test migrations) when the spec's data requirements changed
  • Run the whole test class afterwards, not only the methods you added

Test Class Naming and @UseCase Annotation

Karibu tests are use case tests. Each test class verifies the behavior of exactly one use case from the use case specification (docs/use-cases/UC-XXX-*.md).

Class naming

Test classes must be named after the use case using the pattern UC<id><PascalCaseUseCaseName>Test — for example UC001RegisterPersonTest for use case UC-001 "Register Person". This is the convention the AIUP IntelliJ Navigator plugin relies on to link specs and tests.

@UseCase annotation

Every test method must be annotated with @UseCase(id = "UC-XXX", ...) so the AIUP IntelliJ Navigator plugin can wire up gutter icons and Find Usages between the Markdown spec and the Java tests.

Bootstrap step. Before writing any tests, check whether the project already contains an annotation type named UseCase (search the project for @interface UseCase). If it does not, create it. The package does not matter — the plugin resolves the annotation by short name — but a conventional location is src/main/java/<group>/<artifact>/usecase/UseCase.java. The annotation must have exactly this shape:

package com.example.app.usecase;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface UseCase {
    String id();

    String scenario() default "Main Success Scenario";

    String[] businessRules() default {};
}

Usage on test methods

Annotate each test method with the use case ID and (when applicable) the scenario and business rules it covers. The values must match headings in the corresponding UC-XXX-*.md spec:

AttributeMaps to spec headingDefault
id**Use Case ID:** UC-XXX(required)
scenario## Main Success Scenario or ### A1: …"Main Success Scenario"
businessRules### BR-XXX headings inside the same UC{}
@Test
@UseCase(id = "UC-001")
void register_person_with_valid_data() { ... }

@Test
@UseCase(id = "UC-001", scenario = "A1: Email Already Exists")
void registration_fails_when_email_already_exists() { ... }

@Test
@UseCase(id = "UC-001", scenario = "A2: Invalid Postal Code", businessRules = {"BR-003"})
void registration_fails_when_postal_code_invalid() { ... }

DO NOT

  • Use Mockito for mocking
  • Use @Transactional annotation (transaction boundaries must stay intact)
  • Use services, repositories, or DSLContext to create test data
  • Delete all data in cleanup (only remove data created during the test)
  • Use browser-based testing patterns (this is server-side testing)

Test Data Strategy

Create test data using Flyway migrations in src/test/resources/db/migration.

ApproachLocationPurpose
Flyway migrationsrc/test/resources/db/migration/V*.sqlPopulate test data
Manual cleanup@AfterEach methodRemove test-created data

Key Helper Classes

ClassPurpose
com.github.mvysny.kaributesting.v10.LocatorJFind components
com.github.mvysny.kaributesting.v10.GridKtGrid assertions and interactions
com.github.mvysny.kaributesting.v10.NotificationsKtNotification assertions
com.github.mvysny.kaributesting.v10.pro.ConfirmDialogKtConfirmDialog interactions

Template

Use references/UC001ManagePersonsTest.java as the test class structure. It demonstrates the UC<id><Name>Test class naming, the @UseCase annotation on every test method, and how to map alternative flows (scenario = "A1: …") and business rules (businessRules = {"BR-…"}) onto the spec headings.

Common Patterns

Navigate to View

UI.getCurrent().navigate(PersonView.class);

Find Components

// Find by type
var grid = _get(Grid.class);
var button = _get(Button.class, spec -> spec.withCaption("Save"));
var textField = _get(TextField.class, spec -> spec.withLabel("Name"));

// Find all matching
List<Button> buttons = _find(Button.class);

Grid Operations

// Get grid size
assertThat(GridKt._size(grid)).isEqualTo(100);

// Get selected items
Set<PersonRecord> selected = grid.getSelectedItems();

// Select a row
GridKt._selectRow(grid, 0);

// Get cell component (for action buttons)
GridKt._getCellComponent(grid, 0, "actions")
    .getChildren()
    .filter(Button.class::isInstance)
    .findFirst()
    .map(Button.class::cast)
    .ifPresent(Button::click);

// Get cell value
String name = GridKt._getFormattedRow(grid, 0).get("name");

Form Interactions

// Set field values
_get(TextField.class, spec -> spec.withLabel("Name"))._setValue("John");
_get(ComboBox.class, spec -> spec.withLabel("Country"))._setValue(country);
_get(DatePicker.class, spec -> spec.withLabel("Birth Date"))._setValue(LocalDate.of(1990, 1, 1));

// Click button
_get(Button.class, spec -> spec.withCaption("Save"))._click();

Notification Assertions

// Expect notification
expectNotifications("Record saved successfully");

// Assert no notifications
assertThat(NotificationsKt.getNotifications()).isEmpty();

ConfirmDialog

// Click confirm in dialog
ConfirmDialogKt._fireConfirm(_get(ConfirmDialog.class));

// Click cancel
ConfirmDialogKt._fireCancel(_get(ConfirmDialog.class));

Assertions Reference

Use AssertJ or Karibu Testing assertions:

Assertion TypeExample
Grid sizeassertThat(GridKt._size(grid)).isEqualTo(10)
Component visibleassertThat(button.isVisible()).isTrue()
Component enabledassertThat(button.isEnabled()).isTrue()
Field valueassertThat(textField.getValue()).isEqualTo("x")
Collection sizeassertThat(items).hasSize(5)
NotificationsexpectNotifications("Success")

Workflow

  1. Read the use case specification (docs/use-cases/UC-XXX-*.md) to identify the main success scenario, alternative flows (A1, A2, …), and referenced business rules (BR-XXX)
  2. Check whether a UseCase annotation type already exists in the project. If not, create UseCase.java with the canonical shape shown above
  3. Look for an existing test class for this use case. If there is one, follow "If Tests for This Use Case Already Exist" above and reconcile it with the spec instead of creating a new class
  4. Use TodoWrite to create a task for each test scenario (one task per scenario / alternative flow)
  5. Create the test class named UC<id><PascalCaseUseCaseName>Test using the template (or open the existing one)
  6. For each test method:
    • Annotate with @UseCase(id = "UC-XXX", scenario = "…", businessRules = {"BR-…"}) mirroring the spec headings
    • Navigate to the view
    • Find components using LocatorJ
    • Perform interactions
    • Assert expected outcomes
    • Clean up test data if created during the test
  7. Run tests to verify they pass
  8. If a test fails:
    • Check component locators with _dump() to inspect the component tree
    • Verify test data exists in the Flyway test migrations
    • Ensure navigation to the correct view before finding components
  9. Mark todos complete

Resources

Alternatives

Compare before choosing

Computed 97106

AI-Unified-Process/marketplace

browserless-test

Creates Vaadin Browserless server-side unit tests for Vaadin views covering navigation, component interactions, form validation, grid operations, and notifications. Use when the user asks to "write Browserless tests", "write Vaadin UI unit tests", "unit test a Vaadin view without a browser", "create view tests with the official Vaadin testing framework", or mentions Browserless testing, SpringBrowserlessTest, browserless-test-junit6, UI Unit Testing, or server-side Vaadin testing.

Computed 976

mgiovani/cc-arsenal

team-review

Multi-agent review team: architecture, security, performance, testing, style, docs/UX, plus an adversary that cross-examines the other 6, for security-sensitive, architectural, or large PRs (15+ files) where a single-agent pass risks missing cross-cutting issues. Use for auth/payments/PII changes, schema/pattern changes, compliance sign-off, or when asked to 'get the review team on this' / 'multi-agent review' / 'thorough review before merge'. For a standard PR or a quick pre-merge check, use /r

Computed 957

event4u-app/agent-config

playwright-testing

Use when writing Playwright E2E tests — browser automation, visual regression testing, Page Objects, fixtures, and reliable test patterns.

Computed 94165

JasonColapietro/suede-creator-skills

suede-ai-eval

Design AI evals that catch regressions before users do: rubrics, test cases, failure modes, acceptance gates, and AI-SPEC artifacts.