This page provides a high-level introduction to RIDE (Robot Framework IDE), covering its purpose, architecture, and key components. For detailed information about specific subsystems, refer to:
RIDE is a graphical Integrated Development Environment (IDE) built exclusively for creating and editing Robot Framework test automation files. It is implemented in Python using the wxPython GUI framework and provides both grid-based and text-based editing capabilities for Robot Framework test suites.
Current Version: v2.2.2 (as of src/robotide/version.py18)
Supported Python Versions: 3.9 through 3.14
Supported wxPython Versions: 4.0.7 through 4.2.4 (recommended: 4.2.4)
Sources: src/robotide/version.py1-19 README.adoc1-88 src/robotide/__init__.py16-33
RIDE provides the following core capabilities:
Sources: README.adoc1-88 src/robotide/application/releasenotes.py147-262
The following diagram shows the main application components and their relationships:
RIDE Application Component Structure
Sources: src/robotide/__init__.py58-120 src/robotide/application/application.py93-202 src/robotide/ui/mainframe.py98-192
The following diagram shows how RIDE initializes and creates its main components:
RIDE Startup Sequence
Sources: src/robotide/__init__.py103-119 src/robotide/application/application.py118-202 src/robotide/ui/mainframe.py127-192
The RIDE class (src/robotide/application/application.py93) extends wx.App and serves as the main application controller. It manages:
RideSettings object loaded from settings.cfg or project-specific ride_settings.cfgProject controller that manages the test data hierarchyNamespace object for keyword and variable resolutionPluginLoader that discovers and enables pluginsEditorProvider for managing editor instancesRideFrame windowKey initialization occurs in OnInit() (src/robotide/application/application.py118-202), which:
settings.cfg or project-specific configurationProject controllerRideFrame main windowSources: src/robotide/application/application.py93-202 src/robotide/application/application.py422-429
The RideFrame class (src/robotide/ui/mainframe.py98) is the main application window. It uses the wxPython AUI (Advanced User Interface) framework to manage dockable panels and toolbars.
Key UI Components:
| Component | Type | Location |
|---|---|---|
aui_mgr | aui.AuiManager | mainframe.py146 |
notebook | NoteBook | mainframe.py247 |
tree | Tree | mainframe.py292 |
filemgr | FileExplorer | mainframe.py313 |
toolbar | ToolBar | mainframe.py267 |
main_menu | MenuBar | mainframe.py265 |
The AuiManager handles:
Sources: src/robotide/ui/mainframe.py98-339
RIDE uses a plugin-based architecture where most functionality is implemented as plugins. All plugins inherit from the Plugin base class (src/robotide/pluginapi/plugin.py25).
Core Plugins:
| Plugin | Class | Purpose |
|---|---|---|
| Tree | TreePlugin | Test suite navigation and project explorer |
| Editor | EditorPlugin | Grid-based editor for test cases and keywords |
| Text Editor | TextEditorPlugin | Syntax-highlighted text editor |
| Test Runner | TestRunnerPlugin | Test execution and debugging |
| File Explorer | FileExplorerPlugin | File system navigation |
| Keyword Search | KeywordSearch | Search keywords across project |
The Plugin base class provides:
tree, notebook, model, frame, global_settings via propertiesregister_action()), add tabs (add_tab()), and subscribe to messagessave_setting()Plugin discovery and loading is managed by PluginLoader (src/robotide/application/pluginloader.py), which:
enable() on enabled pluginsSources: src/robotide/pluginapi/plugin.py25-62 src/robotide/ui/treeplugin.py61-122 src/robotide/editor/texteditor.py379-447
RIDE uses a hierarchical controller structure to manage Robot Framework test data:
Controller Hierarchy
For detailed information about controllers and the command pattern, see Controllers and Command Pattern.
Sources: src/robotide/application/application.py422-429
RIDE uses a centralized publish-subscribe message bus called PUBLISHER (src/robotide/publish/__init__.py) for inter-component communication. Components publish RideMessage instances, and other components subscribe to message types.
Common Message Types:
RideTreeSelection: Tree node selection changedRideDataChanged: Test data modifiedRideSaved: File savedRideOpenSuite: Test suite openedRideTestRunning, RideTestPassed, RideTestFailed: Test execution eventsRideSettingsChanged: Configuration changedThis loose coupling enables plugins to react to application state changes without direct dependencies.
For detailed information about the event system, see Event System and Message Bus.
Sources: src/robotide/ui/mainframe.py193-202 src/robotide/ui/treeplugin.py117-118
RIDE stores configuration in two locations:
settings.cfg in the RIDE settings directory (typically ~/.robotframework/ride/)ride_settings.cfg in a .robot directory within the project (since v2.2)Settings are managed by the RideSettings class, which uses the configobj library for parsing. The settings file contains sections for:
[General]: UI language, colors, fonts[Plugins]: Per-plugin configuration[Excludes]: Files/directories to ignoreProject settings allow different configurations per project, such as different Test Runner arguments or UI language preferences.
Sources: src/robotide/application/application.py126-134 src/robotide/application/releasenotes.py147-262
RIDE can be started in multiple ways:
Command Line:
The entry point is main() in src/robotide/__init__.py58 which:
_run() to create the RIDE application instanceSources: src/robotide/__init__.py58-120 src/robotide/application/releasenotes.py234-246
Version information is managed in src/robotide/version.py18 and automatically updated by the build process. Release notes are displayed in a tab when RIDE is first run after an update, managed by the ReleaseNotes class (src/robotide/application/releasenotes.py36).
The release notes system:
Sources: src/robotide/version.py1-19 src/robotide/application/releasenotes.py36-94
Refresh this wiki