The UI test was failing because it relied on an obfuscated class name 'W'
to locate the activation code text field. The class name changed to 'Y' in
a recent version of JetBrains Rider, causing the test to fail with
NoSuchElementException.
This change uses the stable 'accessiblename' attribute instead, which:
- Is more stable across UI updates
- Is semantically meaningful and self-documenting
- Follows accessibility best practices
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
IntelliJ Platform now appends file type suffixes to accessible names
for improved accessibility (e.g., "MyTest.java, Java file" instead of
just "MyTest.java"). This caused UI tests to fail when trying to find
and click on Java file tabs.
Updated the XPath selector in Editor.kt to use a flexible matcher that
handles both:
- Exact match for older IntelliJ versions or files without suffixes
- Prefix match with comma for files with type suffixes
The comma in 'starts-with(@accessiblename,'$title,')' ensures we don't
accidentally match unintended tabs that happen to start with the same
characters.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This test is currently failing and needs investigation.
See AI analysis in CI for details.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Extended macOS CI screen recording to all UI test workflows:
- Added FFmpeg screen recording to PyCharm, Rider, and Octopus tests
- Removed Linux UI tests workflow (runUiTestsLinux.yml)
Removed video-recorder-junit5 library from codebase:
- Removed dependency from all UI test modules
- Removed video recorder system properties from Gradle configs
- Removed @Video annotations and imports from all test files
- Removed "Move video" steps from all workflows
Updated Claude AI analysis prompts:
- Changed from dual video sources to single CI recording
- Added helpful ffmpeg commands for video analysis:
* Extract frames at specific times
* Create thumbnail grids
* Get video duration
* Extract last N seconds
This simplifies the video recording setup by relying solely on
CI-level screen capture, which provides complete coverage of the
entire test run.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
The Monte recorder uses tscc (Camtasia) codec by default, which has
significant decoding limitations. When attempting to use Claude Code
and ffmpeg to analyze test failure videos, ffmpeg was unable to
properly extract frames beyond the first 7 seconds, even though the
full 27-second video was recorded.
The FFmpeg recorder produces standard video formats that can be fully
decoded and analyzed, enabling proper AI-assisted test failure analysis.
Configuration added to all UI test projects:
- tests/ui-ij-tests
- tests/ui-py-tests
- tests/ui-rd-tests
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
After upgrading to Gradle 9.2.1, custom Test tasks no longer
automatically inherit test source set configuration. This caused
UI test tasks to show NO-SOURCE and not execute any tests.
The fix explicitly configures testClassesDirs and classpath for
all three UI test modules:
- tests/ui-ij-tests
- tests/ui-py-tests
- tests/ui-rd-tests
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Replace unsafe non-null assertions (!!) with explicit null checks that provide
meaningful error messages when fold regions are not found. This makes test
failures easier to debug by clearly indicating what was expected.
Changes:
- ChangeActionJavaTest: Fixed 4 instances in testInsertAfterToggleFold and testInsertBeforeFold
- VisualInsertActionJavaTest: Fixed 1 instance in test block insert after folds
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Adds a test to verify that when using 'idearefactormode=visual' with
inclusive selection (default), the caret is correctly positioned at the
inclusive end of the selection (on the last character) rather than the
exclusive end (after the last character).
This test covers the caret adjustment logic in IdeaSpecifics.kt that
moves the caret from IntelliJ's exclusive end position to Vim's
inclusive end position for Visual mode when 'selection' doesn't contain
"exclusive".
The 'idearefactormode' default of Select would leave an inline rename in Insert mode, and hitting Escape to return to Normal frequently cancelled the rename.
Also fixes various edge cases when moving between template variables. Often, this works due to a change in selection, but if there's an empty template variable and no current selection, there's no change in selection, and the mode isn't updated.
For visual selections spanning multiple lines, keep caret position
if it's on the first line. Otherwise move the caret to the start of
the first selected line.
Because of some changes, if we define the test using `testIde` registering, they're not executed properly and don't work.
Now, we don't exclude these tests from the main test execution, so they have to be excluded explicitly
This is a part of work for VIM-3935. Since we'll have to change the `CommandProcessor` execution, this may affect the "undo" command behavior. To ensure the stability, we add undo tests before making a refactoring.
IJ platform runs additional project leak checks when it detects teamcity run. It was quite complicated to understand why tests were failing on TC, but not locally, so I decided to enable TeamCity emulation to have these checks locally.
However, it turned out that in addition to that, an IJ platform also collects CPU statistics on TeamCity, which may take around a minute. This dramatically affects the performance of local execution. So, this property is turned off.