Agent Skillss2b-dev/smart-second-brain › obsidian-integration-test

obsidian-integration-test

GitHub

基于 Obsidian CLI 对真实插件进行端到端集成测试,覆盖命令执行、DOM状态验证、文件操作及错误检测。

.github/skills/obsidian-integration-test/SKILL.md s2b-dev/smart-second-brain

Trigger Scenarios

需要验证 Obsidian 插件在真实环境下的完整行为 检查插件命令执行后的 DOM 渲染和运行时错误

Install

npx skills add s2b-dev/smart-second-brain --skill obsidian-integration-test -g -y
More Options

Non-standard path

npx skills add https://github.com/s2b-dev/smart-second-brain/tree/main/.github/skills/obsidian-integration-test -g -y

Use without installing

npx skills use s2b-dev/smart-second-brain@obsidian-integration-test

指定 Agent (Claude Code)

npx skills add s2b-dev/smart-second-brain --skill obsidian-integration-test -a claude-code -g -y

安装 repo 全部 skill

npx skills add s2b-dev/smart-second-brain --all -g -y

预览 repo 内 skill

npx skills add s2b-dev/smart-second-brain --list

SKILL.md

Frontmatter
{
    "name": "obsidian-integration-test",
    "description": "Run integration tests against a live Obsidian vault using the obsidian CLI. Use for: verifying plugin behavior end-to-end, checking DOM state after commands, asserting no runtime errors, creating\/reading\/deleting test fixtures in the vault, taking screenshots, inspecting console output. Do NOT use for unit tests or mocked environments.",
    "argument-hint": "Describe the user flow or behavior to verify"
}

Obsidian CLI Integration Testing

Use the obsidian CLI to drive end-to-end tests against a live Obsidian instance. This enables testing real plugin behavior: command execution, DOM rendering, vault file operations, and error detection.

Prerequisites

  • Obsidian desktop app must be running with the target vault open
  • The plugin must be built and installed in the vault
  • Plugin ID: smart-second-brain

Quick Start

# Build, reload, and verify
bun run build
obsidian plugin:reload id=smart-second-brain
obsidian dev:errors  # should be empty

Command Reference

Plugin Lifecycle

# Check plugin status
obsidian plugin id=smart-second-brain

# Enable / disable / reload
obsidian plugin:enable id=smart-second-brain
obsidian plugin:disable id=smart-second-brain
obsidian plugin:reload id=smart-second-brain

Execute Plugin Commands

obsidian command id=smart-second-brain:new-chat
obsidian command id=smart-second-brain:open-chat
obsidian command id=smart-second-brain:open-smart-graph
obsidian command id=smart-second-brain:search-notes

To discover all available commands:

obsidian commands filter=smart-second-brain

Vault File Operations (Test Fixtures)

# Create a test note
obsidian create name="Integration Test Note" content="Test content with [[wikilinks]]"

# Read it back
obsidian read file="Integration Test Note"

# Append / prepend content
obsidian append file="Integration Test Note" content="\nMore content"
obsidian prepend file="Integration Test Note" content="Header\n"

# Search vault
obsidian search query="test content" format=json

# Clean up
obsidian delete file="Integration Test Note"

DOM Inspection (Assertions)

# Check if an element exists
obsidian dev:dom selector=".chat-view-container" total

# Get text content of an element
obsidian dev:dom selector=".chat-message" text

# Get all matching elements
obsidian dev:dom selector=".chat-message" all text

# Check an attribute value
obsidian dev:dom selector=".some-button" attr=disabled

# Get a CSS property
obsidian dev:dom selector=".modal" css=display

# Get innerHTML
obsidian dev:dom selector=".workspace-leaf-content" inner

Console & Error Inspection

# Check for runtime errors (should be empty after actions)
obsidian dev:errors

# View console output, optionally filtered by level
obsidian dev:console
obsidian dev:console level=error
obsidian dev:console level=warn limit=10

# Clear buffers before a test run
obsidian dev:errors clear
obsidian dev:console clear

Screenshots

obsidian dev:screenshot path=screenshot.png

Chrome DevTools Protocol (Advanced)

For interactions not covered by other commands (clicking buttons, typing text, evaluating JS in the app context):

# Evaluate JavaScript in the Obsidian app context
obsidian dev:cdp method=Runtime.evaluate params='{"expression": "app.workspace.activeLeaf?.view?.getViewType()"}'

# Click coordinates, dispatch events, etc.
obsidian dev:cdp method=Input.dispatchMouseEvent params='{"type":"mousePressed","x":100,"y":200,"button":"left","clickCount":1}'

Targeting a Specific Vault

If multiple vaults are open, target one by name:

obsidian plugin:reload id=smart-second-brain vault="My Vault"

Integration Test Pattern

A typical test flow:

# 1. Setup
bun run build
obsidian plugin:reload id=smart-second-brain
obsidian dev:errors clear
obsidian dev:console clear

# 2. Create test fixtures
obsidian create name="Test Note A" content="Content about topic A with [[Test Note B]]"
obsidian create name="Test Note B" content="Content about topic B"

# 3. Execute the action under test
obsidian command id=smart-second-brain:open-chat

# 4. Wait briefly for UI to render, then assert
sleep 1
obsidian dev:dom selector="[data-type='chat']" total  # expect: 1
obsidian dev:errors  # expect: empty

# 5. Teardown
obsidian delete file="Test Note A"
obsidian delete file="Test Note B"

Writing Scripted Tests

You can run integration tests from a shell script or from vitest using child_process.execSync:

import { execSync } from "child_process";

function obsidian(cmd: string): string {
  return execSync(`obsidian ${cmd}`, { encoding: "utf-8" }).trim();
}

// Example assertions
const errors = obsidian("dev:errors");
expect(errors).toBe("");

const chatViewCount = obsidian('dev:dom selector="[data-type=\\"chat\\"]" total');
expect(chatViewCount).toBe("1");

Full CLI Reference

Run obsidian help for all commands, or obsidian help <command> for details on a specific command.

Version History

  • 2.0.5 Current 2026-09-08 21:09

Same Skill Collection

.claude/skills/dispatch/SKILL.md
integration/S2B Test Vault/.obsidian/skills/bases/SKILL.md
integration/S2B Test Vault/.obsidian/skills/canvas/SKILL.md
integration/S2B Test Vault/.obsidian/skills/dataview/SKILL.md
integration/S2B Test Vault/.obsidian/skills/notebook-navigator/SKILL.md
integration/S2B Test Vault/.obsidian/skills/obsidian-charts/SKILL.md
integration/S2B Test Vault/.obsidian/skills/tasknotes/SKILL.md
integration/S2B Test Vault/.obsidian/skills/tasks/SKILL.md
integration/S2B Test Vault/Agents/Skills/bases/SKILL.md
integration/S2B Test Vault/Agents/Skills/canvas/SKILL.md
integration/S2B Test Vault/Agents/Skills/dataview/SKILL.md
integration/S2B Test Vault/Agents/Skills/explore-vault/SKILL.md
integration/S2B Test Vault/Agents/Skills/manage-notes/SKILL.md
integration/S2B Test Vault/Agents/Skills/manage-skills/SKILL.md
integration/S2B Test Vault/Agents/Skills/notebook-navigator/SKILL.md
integration/S2B Test Vault/Agents/Skills/obsidian-charts/SKILL.md
integration/S2B Test Vault/Agents/Skills/tasknotes/SKILL.md
integration/S2B Test Vault/Agents/Skills/tasks/SKILL.md
integration/S2B Test Vault/Agents/Skills/web/SKILL.md
src/skills/defaults/explore-vault/SKILL.md
src/skills/defaults/manage-notes/SKILL.md
src/skills/defaults/manage-skills/SKILL.md
src/skills/defaults/web/SKILL.md
src/skills/integrations/bases/SKILL.md
src/skills/integrations/canvas/SKILL.md
src/skills/integrations/dataview/SKILL.md
src/skills/integrations/obsidian-charts/SKILL.md
src/skills/integrations/tasknotes/SKILL.md
src/skills/integrations/tasks/SKILL.md

Metadata

Files
0
Version
2.0.5
Hash
fb3096d5
Indexed
2026-09-08 21:09

trang chủ - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-09-10 04:21
浙ICP备14020137号-1 $bản đồ khách truy cập$