pattern-test
π―Skillfrom commontoolsinc/labs
Validates pattern implementation by writing and executing structured test sequences for pattern-based components.
Installation
npx skills add https://github.com/commontoolsinc/labs --skill pattern-testSkill Details
Write and run pattern tests
Overview
Use Skill("ct") for ct CLI documentation when running commands.
# Test Sub-Pattern
Prerequisite Check
Before writing tests, verify the pattern has:
pattern()(not single-typepattern)() - Actions typed as
Streamin Output interface - Bound handlers returned from the pattern
If missing, fix the pattern first - tests can't call .send() without proper Output types.
Read First
docs/common/workflows/pattern-testing.md- Full test file format and prerequisites
Test Command
```bash
deno task ct test packages/patterns/[name]/[file].test.tsx
```
Test File Template
```tsx
import { action, computed, pattern } from "commontools";
import Pattern from "./pattern.tsx";
export default pattern(() => {
// 1. Instantiate pattern under test
const instance = Pattern({ / input / });
// 2. Define actions (trigger events)
const action_do_something = action(() => {
instance.someAction.send();
});
// 3. Define assertions (computed booleans)
const assert_initial_state = computed(() => instance.someField === expectedValue);
const assert_after_action = computed(() => instance.someField === newValue);
// 4. Return tests array
return {
tests: [
{ assertion: assert_initial_state },
{ action: action_do_something },
{ assertion: assert_after_action },
],
};
});
```
Key Points
- Test each sub-pattern BEFORE writing the next one
- Use
.send()to trigger actions (requires Streamin Output type) - Use direct property access to read values (not
.get()) - Use
computed(() => boolean)for assertions
Done When
- Test file exists alongside pattern
- Tests pass
- Ready for next sub-pattern
More from this repository8
Guides developers in creating and integrating Lit web components within the Common UI v2 system, focusing on reactive, theme-aware, and runtime-integrated UI components.
Guides developers in creating reactive TypeScript patterns for CommonTools, focusing on efficient, iterative development from sketch to deployment.
Guides developers in deploying, managing, and interacting with charms and recipes using the CommonTools CLI through precise command-line operations.
Establishes a hierarchical source resolution system for Oracle & Corrector agents, prioritizing specs, code, and documentation.
Deploys and manages Claude patterns via CLI, enabling syntax checking, deployment, inspection, and testing of pattern handlers.
Applies standardized UI components and layout patterns to polish and structure user interfaces with consistent design.
Breaks down complex tasks into manageable subtasks using bd (beads), tracking progress and dependencies across sessions.
Generates TypeScript schemas with Input/Output types for patterns, ensuring type safety and testability through structured type definitions.