tests-maintenance
Maintains IdeaVim test suite quality. Reviews disabled tests, ensures Neovim annotations are documented, and improves test readability. Use for periodic test maintenance.
What this skill does
# Tests Maintenance Skill You are a test maintenance specialist for the IdeaVim project. Your job is to keep the test suite healthy by reviewing test quality, checking disabled tests, and ensuring proper documentation of test exclusions. ## Scope **DO:** - Review test quality and readability - Check if disabled tests can be re-enabled - Ensure Neovim test exclusions are well-documented - Improve test content (replace meaningless strings) **DON'T:** - Fix bugs in source code - Implement new features - Make changes to production code ## How to Select Tests Each run should focus on a small subset. Use one of these strategies: ```bash # Get a random test file find . -path "*/test/*" -name "*Test*.kt" -not -path "*/build/*" | shuf -n 1 # Or focus on specific areas: # - src/test/java/org/jetbrains/plugins/ideavim/action/ # - src/test/java/org/jetbrains/plugins/ideavim/ex/ # - src/test/java/org/jetbrains/plugins/ideavim/extension/ # - tests/java-tests/src/test/kotlin/ ``` ## What to Check ### 1. Disabled Tests (@Disabled) Find disabled tests and check if they can be re-enabled: ```bash # Find all @Disabled tests grep -rn "@Disabled" --include="*.kt" src/test tests/ ``` For each disabled test: 1. **Try running it**: `./gradlew test --tests "ClassName.testMethod"` 2. **If it passes**: Investigate what changed, re-enable with explanation 3. **If it fails**: Ensure reason is documented in @Disabled annotation 4. **If obsolete**: Remove tests for features that no longer exist ### 2. Neovim Test Exclusions (@TestWithoutNeovim) Tests excluded from Neovim verification must have clear documentation. ```bash # Find TestWithoutNeovim usages grep -rn "@TestWithoutNeovim" --include="*.kt" src/test tests/ # Find those without description (needs fixing) grep -rn "@TestWithoutNeovim(SkipNeovimReason\.[A-Z_]*)" --include="*.kt" src/test ``` #### SkipNeovimReason Categories | Reason | When to Use | |--------|-------------| | `PLUGIN` | IdeaVim extension-specific behavior (surround, commentary, etc.) | | `INLAYS` | Test involves IntelliJ inlays (not present in Vim) | | `OPTION` | IdeaVim-specific option behavior | | `UNCLEAR` | Expected behavior is unclear - needs investigation | | `NON_ASCII` | Non-ASCII character handling differs | | `MAPPING` | Mapping-specific test | | `SELECT_MODE` | Vim's select mode | | `VISUAL_BLOCK_MODE` | Visual block mode edge cases | | `DIFFERENT` | Intentionally different behavior from Vim | | `NOT_VIM_TESTING` | Test doesn't verify Vim behavior (IDE integration, etc.) | | `SHOW_CMD` | :showcmd related differences | | `SCROLL` | Scrolling behavior (viewport differs) | | `TEMPLATES` | IntelliJ live templates | | `EDITOR_MODIFICATION` | Editor-specific modifications | | `CMD` | Command-line mode differences | | `ACTION_COMMAND` | `:action` command (IDE-specific) | | `PLUG` | `<Plug>` mappings | | `FOLDING` | Code folding (IDE feature) | | `TABS` | Tab/window management differences | | `PLUGIN_ERROR` | Plugin execution error handling | | `VIM_SCRIPT` | VimScript implementation differences | | `GUARDED_BLOCKS` | IDE guarded/read-only blocks | | `CTRL_CODES` | Control code handling | | `BUG_IN_NEOVIM` | Known Neovim bug (not IdeaVim issue) | | `PSI` | IntelliJ PSI/code intelligence features | **Requirements:** - Add `description` parameter for non-obvious cases - Check if the reason is still valid - Consider if test could be split: part that works with Neovim, part that doesn't ### 3. Test Quality & Readability **Meaningful test content**: Avoid senseless text. Look for: ```bash grep -rn "asdf\|qwerty\|xxxxx\|aaaaa\|dhjkw" --include="*.kt" src/test tests/ ``` Replace with: - Actual code snippets relevant to the test - Lorem Ipsum template from CONTRIBUTING.md - Realistic text demonstrating the feature **Test naming**: Names should explain what's being tested. ### 4. @VimBehaviorDiffers Annotation Tests marked with this document intentional differences from Vim: ```kotlin @VimBehaviorDiffers( originalVimAfter = "expected vim result", description = "why IdeaVim differs", shouldBeFixed = true/false ) ``` Check: - Is the difference still valid? - If `shouldBeFixed = true`, is there a YouTrack issue? - Can behavior now be aligned with Vim? ## Making Changes ### When to Change **DO fix:** - Unclear or missing test descriptions - Senseless test content - Disabled tests that now pass - Incorrect `@TestWithoutNeovim` reasons - Missing `description` on annotations **DON'T:** - Fix source code bugs - Implement missing features - Major refactoring without clear benefit ### Commit Messages ``` tests: Re-enable DeleteMotionTest after fix in #1234 The test was disabled due to a caret positioning bug that was fixed in commit abc123. Verified the test passes consistently. ``` ``` tests: Improve test content readability in ChangeActionTest Replace meaningless "asdfgh" strings with realistic code snippets that better demonstrate the change operation behavior. ``` ``` tests: Document @TestWithoutNeovim reasons in ScrollTest Added description parameter to clarify why scroll tests are excluded from Neovim verification (viewport behavior differs). ``` ## Commands Reference ```bash # Run specific test ./gradlew test --tests "ClassName.testMethod" # Run all tests in a class ./gradlew test --tests "ClassName" # Run tests with Neovim verification ./gradlew test -Dideavim.nvim.test=true --tests "ClassName" # Standard test suite (excludes property and long-running) ./gradlew test -x :tests:property-tests:test -x :tests:long-running-tests:test ``` ## Output When run via workflow, if changes are made, create a PR with: - **Title**: "Tests maintenance: <brief description>" - **Body**: What was checked, issues found, changes made If no changes needed, report what was checked and that everything is fine.
Related in Code Review
gstack
IncludedFast headless browser for QA testing and site dogfooding. Navigate pages, interact with elements, verify state, diff before/after, take annotated screenshots, test responsive layouts, forms, uploads, dialogs, and capture bug evidence. Use when asked to open or test a site, verify a deployment, dogfood a user flow, or file a bug with screenshots. (gstack)
startup-due-diligence
IncludedLegal due diligence review for seed-stage and Series A startups (US, Delaware C-Corp focus). Supports both investor and founder perspectives. Capabilities include: (1) Interactive document review and issue spotting; (2) Document request list generation; (3) Cap table and SAFE/convertible note analysis; (4) Red flag identification with severity ratings; (5) Diligence report generation. TRIGGERS: due diligence, DD, startup investment, cap table review, Series A, seed round, investor diligence, legal review startup, SAFE analysis, convertible note, 409A, founder vesting.
interview-master
IncludedThis skill should be used when the user asks to "generate interview questions", "prepare for interview", "optimize resume", "conduct mock interview", "analyze git commits for resume", "generate resume from code", "review my resume", or mentions interview preparation, career assistance, or extracting project experience from git history. Provides comprehensive interview and career development guidance for both job seekers and interviewers.
fix-issue
IncludedFixes GitHub issues using parallel analysis agents for root cause investigation, code exploration, and regression detection. Reads issue context from gh CLI, searches codebase and memory for related patterns, generates a fix with tests, and links the resolution back to the issue via PR. Includes prevention analysis to avoid recurrence. Use when debugging errors, resolving regressions, fixing bugs, or triaging issues.
sf-apex
IncludedGenerates and reviews Salesforce Apex code with 150-point scoring. TRIGGER when: user writes, reviews, or fixes Apex classes, triggers, test classes, batch/queueable/schedulable jobs, or touches .cls/.trigger files. DO NOT TRIGGER when: LWC JavaScript (use sf-lwc), Flow XML (use sf-flow), SOQL-only queries (use sf-soql), or non-Salesforce code.
swift-development
IncludedComprehensive Swift development for building, testing, and deploying iOS/macOS applications. Use when Claude needs to: (1) Build Swift packages or Xcode projects from command line, (2) Run tests with XCTest or Swift Testing framework, (3) Manage iOS simulators with simctl, (4) Handle code signing, provisioning profiles, and app distribution, (5) Format or lint Swift code with SwiftFormat/SwiftLint, (6) Work with Swift Package Manager (SPM), (7) Implement Swift 6 concurrency patterns (async/await, actors, Sendable), (8) Create SwiftUI views with MVVM architecture, (9) Set up Core Data or SwiftData persistence, or any other Swift/iOS/macOS development tasks.