Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
7fbe2d4
add vs code system tests
seanbudd Nov 12, 2025
354d31b
Pre-commit auto-fix
pre-commit-ci[bot] Nov 12, 2025
e1757e4
register tests
seanbudd Nov 12, 2025
cc1c575
Merge remote-tracking branch 'origin/vsCodeTests' into vsCodeTests
seanbudd Nov 12, 2025
c4890f1
Fix types better
seanbudd Nov 12, 2025
4f76e0a
improve command pallette tests
seanbudd Nov 12, 2025
2f73988
improve search panel tests
seanbudd Nov 12, 2025
892f402
minor fixes, add extensions panel
seanbudd Nov 12, 2025
a8402bc
Pre-commit auto-fix
pre-commit-ci[bot] Nov 12, 2025
cd24529
add terminal panel tests
seanbudd Nov 12, 2025
7b8759d
Pre-commit auto-fix
pre-commit-ci[bot] Nov 12, 2025
75bb7de
minor fixes
seanbudd Nov 12, 2025
fc7c008
fix up extensions panel
seanbudd Nov 12, 2025
1b63038
test fixes
seanbudd Nov 12, 2025
10c89de
improve handling of tests
seanbudd Nov 13, 2025
0dec7bc
typo fix
seanbudd Nov 13, 2025
ef9d4ac
fix up dir
seanbudd Nov 13, 2025
aa66382
Apply suggestions from code review
seanbudd Nov 13, 2025
14bfdb9
fix terminal nav
seanbudd Nov 13, 2025
e818036
Merge remote-tracking branch 'origin/vsCodeTests' into vsCodeTests
seanbudd Nov 13, 2025
5aba130
minor test fixes
seanbudd Nov 13, 2025
2ab71c8
agree to overwrite file
seanbudd Nov 13, 2025
a99af47
fix wait for speech
seanbudd Nov 13, 2025
531c99b
remove broken tests
seanbudd Nov 13, 2025
767b461
Apply suggestions from code review
seanbudd Nov 13, 2025
02c3c98
fix up file nav
seanbudd Nov 13, 2025
079c173
Merge remote-tracking branch 'origin/vsCodeTests' into vsCodeTests
seanbudd Nov 13, 2025
5cb2a3e
fix up test
seanbudd Nov 13, 2025
2ac0e3a
change save confirmation key used
seanbudd Nov 13, 2025
b6d9d06
Update tests/system/robot/vscodeTests.py
SaschaCowley Nov 14, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
114 changes: 114 additions & 0 deletions tests/manual/applications/IDEs/vsCodium.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
# VSCodium Smoke Testing Plan

## Objective

To ensure NVDA functions correctly with VS Code or other VSCodium derivatives across typical user workflows.
This plan focuses on basic navigation, file operations, editor accessibility, and common development tasks.
VSCodium is based on Electron and as such smoke testing can reveal issues with the framework.

## Areas Covered

* Application launch and window navigation
* File operations (open, save, close)
* Editor accessibility
* Command palette and search
* Extensions
* Terminal

## 1. Application Launch and Window Navigation

### Steps

1. Launch VSCodium
1. Verify NVDA announces the VSCodium window title
1. Use `ctrl+shift+p` to open the command palette
1. Use `f1` to open the command palette (alternative)
1. Use `ctrl+b` to toggle the sidebar
1. Use `ctrl+shift+f` to focus the Search panel
1. Use `f6` to navigate between sections of the window.
Comment thread
seanbudd marked this conversation as resolved.
Outdated

### Expected Results

* NVDA announces window title and major UI regions
* Navigation between panels and tabs is clear and consistent

## 2. File Operations

### Steps

1. Use `ctrl+n` to create a new file
1. Type sample text
1. Use `ctrl+f` to focus the Search panel
Comment thread
seanbudd marked this conversation as resolved.
Outdated
1. Use `ctrl+s` to save, enter a filename, and confirm
1. Use `ctrl+o` to open an existing file
1. Use `ctrl+w` to close the current file
1. Use `ctrl+shift+t` to reopen a closed file
1. Use `ctrl+n` to create another new file
1. Use `ctrl+tab` to switch between open files/tabs
1. Use `ctrl+shift+e` to focus the File Explorer

### Expected Results

* NVDA announces file dialogs and file actions
* File operations are accessible and confirmed by speech

## 3. Editor Accessibility

### Steps

1. Type and navigate text in the editor using arrow keys
1. Use `ctrl+home` and `ctrl+end` to jump to start/end of file
1. Use `ctrl+f` to open the find bar and search for text
1. Use `ctrl+h` to open the replace bar
1. Use `ctrl+z` and `ctrl+y` to undo/redo
1. Use `ctrl+shift+\` to jump to matching bracket
1. Use `alt+upArrow` and `alt+downArrow` to move lines up/down

### Expected Results

* NVDA announces line numbers, text, and search results
* Editing and navigation are accessible

## 4. Command Palette and Search

### Steps

1. Use `ctrl+shift+p` or `f1` to open the command palette
1. Type to search for commands (e.g., "toggle word wrap")
1. Use arrow keys to navigate results
1. Press `enter` to execute a command
1. Use `ctrl+shift+f` to open the search panel
1. Enter a search term and review results

### Expected Results

* NVDA announces command palette, search results, and command execution
* All command palette and search features are accessible

## 5. Extensions

### Steps

1. Use `ctrl+shift+x` to open the Extensions panel
1. Use arrow keys to navigate available extensions
1. Use `tab` to move between extension details and actions
1. Use `enter` to install or enable an extension

### Expected Results

* NVDA announces extension names, details, and actions
* Installing and managing extensions is accessible

## 6. Terminal

### Steps

1. Use ``ctrl+` `` to open the integrated terminal
1. Type commands and review output
1. Use `ctrl+shift+\` to create a new terminal
Comment thread
seanbudd marked this conversation as resolved.
Outdated
1. Use `ctrl+tab` to switch between terminal and editor

### Expected Results

* NVDA announces terminal focus and output
* Terminal operations are accessible
58 changes: 52 additions & 6 deletions tests/system/robot/vscodeTests.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,65 @@
# A part of NonVisual Desktop Access (NVDA)
# Copyright (C) 2025 Bill Dengler
# This file is covered by the GNU General Public License.
# See the file COPYING for more details.

# Copyright (C) 2025-2025 NV Access Limited, Bill Dengler
Comment thread
SaschaCowley marked this conversation as resolved.
Outdated
# This file may be used under the terms of the GNU General Public License, version 2 or later, as modified by the NVDA license.
# For full terms and any additional permissions, see the NVDA license file: https://github.com/nvaccess/nvda/blob/master/copying.txt

from robot.libraries.BuiltIn import BuiltIn
from SystemTestSpy import _getLib
import NvdaLib as _NvdaLib
from typing import TYPE_CHECKING

if TYPE_CHECKING:
from VSCodeLib import VSCodeLib

_builtIn: BuiltIn = BuiltIn()
Comment thread
seanbudd marked this conversation as resolved.
_vscode = _getLib("VSCodeLib")
_vscode: VSCodeLib = _getLib("VSCodeLib")


Comment thread
seanbudd marked this conversation as resolved.
def vs_code_status_line_is_available():
def status_line_is_available():
"""Start Visual Studio Code and ensure NVDA+end does not report "no status line found"."""
_vscode.start_vscode()
speech = _NvdaLib.getSpeechAfterKey("NVDA+end")
_builtIn.should_not_contain(speech, "no status line found")


def sidebar_toggle_announced():
"""Start Visual Studio Code and ensure NVDA+end does not report "no status line found"."""
Comment thread
seanbudd marked this conversation as resolved.
Outdated
_vscode.start_vscode()
speech = _NvdaLib.getSpeechAfterKey("control+b")
_builtIn.should_contain(speech, "sidebar shown")
speech = _NvdaLib.getSpeechAfterKey("control+b")
_builtIn.should_contain(speech, "sidebar hidden")


def command_palette_opens():
"""Start Visual Studio Code and ensure NVDA+end does not report "no status line found"."""
Comment thread
seanbudd marked this conversation as resolved.
Outdated
_vscode.start_vscode()
speech = _NvdaLib.getSpeechAfterKey("control+shift+p")
_builtIn.should_contain(speech, "type the name of a command")
_NvdaLib.getSpeechAfterKey("escape")
speech = _NvdaLib.getSpeechAfterKey("f1")
_builtIn.should_contain(speech, "type the name of a command")
Comment thread
seanbudd marked this conversation as resolved.
Outdated


def file_navigation():
"""Start Visual Studio Code and ensure NVDA+end does not report "no status line found"."""
_vscode.start_vscode()
# create 2 new files
_NvdaLib.getSpeechAfterKey("control+n")
# navigate to file
speech = _NvdaLib.getSpeechAfterKey("control+tab")
_builtIn.should_contain(speech, "Untitled-1")
# Create second file
_NvdaLib.getSpeechAfterKey("control+n")
speech = _NvdaLib.getSpeechAfterKey("control+tab")
_builtIn.should_contain(speech, "Untitled-2")
# Go to file explorer
speech = _NvdaLib.getSpeechAfterKey("control+shift+e")
Comment thread
seanbudd marked this conversation as resolved.
_builtIn.should_contain(speech, "Files Explorer")


def search_panel_focus():
"""Start Visual Studio Code and ensure NVDA+end does not report "no status line found"."""
_vscode.start_vscode()
speech = _NvdaLib.getSpeechAfterKey("control+shift+f")
_builtIn.should_contain(speech, "Search")
Loading