diff --git a/CHANGELOG.md b/CHANGELOG.md index 5de734c..379de2a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,4 +6,21 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how ## [Unreleased] -- Initial release \ No newline at end of file +- Initial release + +## [0.0.3] - 2026-03-02 +### Added +- Fixed suite setup and teardown keywords are now included correctly +- Refactored existing webviews using Shadcn components and applied several visual improvements including: + - Added collapsible sections across all three webviews + - Adjusted font and badge colors + - Implemented table pagination in the main content area + - Ensured VS Code theme compatibility + - Added several tooltips for more information +- Several maintenance improvements and internal enhancements to keep the extension up to date. + - Updated README + - Updated server port from 8000 to 18123 (less used than 8000) + - Updated project dependencies to latest versions + - Refactored keyword similarity without numpy and scikit-learn (backend size is now just around 20 MB instead of 300MB before) + - Added support for additional libraries including all BuiltIn libraries (Collections, DateTime etc.), Appium and Requests + - Migrated to Robocop v8.2.2 (code changes were necessary) \ No newline at end of file diff --git a/packages/roboview/README.md b/packages/roboview/README.md index e69de29..cf1b67c 100644 --- a/packages/roboview/README.md +++ b/packages/roboview/README.md @@ -0,0 +1,207 @@ +# RoboView - Keyword Management in Robot Framework +![banner](./static/github_banner.png) +[![PyPI version](https://img.shields.io/pypi/v/robotframework-roboview.svg)](https://pypi.org/project/robotframework-roboview/) +![license](https://img.shields.io/badge/license-Apache--2.0-green) +![python](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13-blue) + + +RoboView is a Visual Studio Code extension designed to help you manage keywords within your Robot Framework projects and improve overall test quality through built-in Robocop integration. Its primary goal is to provide a comprehensive overview of all keywords and their relationships, making it easier to understand and maintain your test automation codebase. + +--- + +## ✨ Key Features + +- 🗂️ **Workspace:** Automatically selects your current workspace project and generates comprehensive overviews. +- 📈 **Dashboard:** Get key performance indicators and a general overview of your robot framework project. +- 📝 **Keyword Overview & Filtering:** Instantly view all keywords of a selected file, filter by type (initialized, called). +- ❓ **Global Filter:** Searches your files for any keywords lacking documentation, unused keywords or faulty keywords with cycle calling. +- 📖 **Detailed Keyword Insights:** Select any keyword to see where it is defined, how often it is used (both in its own file and across the project), and view its documentation. +- 🧩 **Similarity Detection:** Get information about similar or potentially duplicate keywords through similarity analysis of keyword source code. +- 🧭 **Code Navigation:** Jump straight to a keyword’s definition with a simple Ctrl+Click. +- 🛡️ **Robocop Integration:** Runs Robocop directly from within RoboView, inspect lint results in context, and use your custom configuration file (e.g. robocop.toml) out of the box. +- 🔍 **Search & Sorting:** Quickly find keywords using the search bar and sort them by name or usage statistics. + +--- + +## ⚙️ Installation Guide + +RoboView consists of two parts: a **backend** (Python package) and a **frontend** (Visual Studio Code extension). + +### ✅ Backend + +Install the backend via **pip**: + +```bash +pip install robotframework-roboview +``` + +### ✅ Frontend + +The Frontend is available as a Visual Studio Code extension on the Marketplace – install it in seconds from the VS Code Extensions view. +1. Open **Visual Studio Code**. +2. Go to the **Extensions** view (`Ctrl+Shift+X` / `Cmd+Shift+X`). +3. Search for **"RoboView"**. +4. Install the RoboView extension by *viadee Unternehmensberatung AG*. + +--- + +## 🛠️ GitHub + +You can find the RoboView source code and issue tracker on GitHub: + +👉 **https://github.com/viadee/robotframework-roboview** + +--- + +## 📝 Notes and Recommendations + +- For Robocop to automatically detect your configuration, name the file **`robocop.toml`**, **`robot.toml`** or integrate in **`pyproject.toml`**. + If you cannot change the filename in your project, you can instead set the environment variable **`ROBOCOP_CONFIG_PATH`** to the full path of your config file. +- If the Robocop configuration file is outdated or cannot be parsed, RoboView falls back to **Robocop’s default settings**. The same applies if no configuration file is found. +- RoboView follows your IDE’s color theme. We recommend using a **dark theme**, as text in light themes can be harder to read - but feel free to experiment and choose what works best for you. + +--- + +## 🔍 How to navigate RoboView + +In the following three sections, we will dive deeper into how to navigate RoboView: where to find the features and understand the terminology we use. We start with the dashboard, then look at the keyword usage overview, and finally the Robocop integration. +You can switch between these views using the buttons in the top-right corner of RoboView: Dashboard, Keyword Usage, and Robocop. + +## 📋 1) Dashboard + +The **Dashboard** gives you a high‑level overview of the selected Robot Framework project and its overall health. + + +

+ keyword_list +

+

+ keyword_list +

+ +
+ +At the top of the dashboard you’ll see the **Selected Project**. RoboView automatically detects your current workspace and shows: +- The **project name** +- The **absolute path** to the project root + +This ensures all metrics are calculated against the correct `.robot` and `.resource` files. + +### KPIs + +The **KPIs** section summarizes the most important metrics of your test suite: +- **User Defined Keywords**: Total number of custom keywords found in your project. +- **Keyword Reuse Rate**: Percentage of keywords that are used more than once. A higher value indicates better reuse and less duplication/redundancy. +- **Unused Keywords**: Number of keywords that are never called anywhere in the project. Use this to identify dead code and candidates for cleanup. +- **Robocop Issues**: Total number of Robocop violations detected across the project. This helps you quickly assess structural and style problems in your tests. +- **Documentation Coverage**: Percentage of keywords that contain a `[Documentation]` section. A higher value means your test suite is better documented and easier to maintain. +- **Robot Framework Files**: Total number of `.robot` and `.resource` files that were analyzed. Use the dashboard to quickly spot problematic areas (e.g. many unused keywords, low documentation coverage, or a high number of Robocop issues) and decide where to focus your refactoring or cleanup efforts first. + + +## 🌳 2) Keyword Overview + +

+ Keyword Overview Layout +

+

+[ Left: File Navigation & Keyword Filters ] [ Middle: Keyword List ] [ Right: Keyword Details ] +

+ +

+ graph_view +

+ +
+ +### ⬅️ Left Side – Navigation & Filters + +- File Selection: At the top, a dropdown lets you select a file. The current VS Code workspace is used as root, and all + .robot and .resource files are available. +- Type Filter: Choose which group of keywords to display for the selected file: + - All Keywords: Shows every keyword that is either defined in or used by the selected file. + - Initialized Keywords: Only keywords that are defined/implemented in the selected file. + - Called Keywords: Only keywords that are used in the selected file but defined elsewhere. +- Global Filter: Jump directly to common problem areas across the entire project: + - Keywords without Documentation: Keywords that are missing documentation. + - Unused Keywords: Keywords that are never called in any analyzed file. + - Keywords with Calling Cycles: Keywords that participate in cyclic calls (A calls B, B calls A, etc.), which can indicate design or maintainability issues. + +
+ +### 📊 Middle – Keyword List + +The middle section lists all keywords found in the selected file and shows key information about each of them: + +- Origin indicator: A color-coded label to the left of the keyword name shows where the keyword comes from: + - U: User-defined keyword. + - E: External keyword (e.g. from BuiltIn or libraries like Browser). +- Definition location: The file in which the keyword is defined. +- File-local usage count: How often the keyword is used (called) in the selected file. +- Project-wide usage count: How often the keyword is used across all .robot and .resource files in the current project. + +
+ +### ➡️ Right Side – Keyword Details + +When you select a keyword (by clicking a row in the middle table), the right panel shows detailed information: + +- Documentation: The keyword’s documentation as defined in the source code. +- Usage across files: In which .robot and .resource files the keyword is used, and how often in each file. +- Similarity analysis: A list of up to five keywords that are most similar to the selected one, based on its name and source code using term-frequency-based similarity. + +
+ +--- + +

🛡️ 3) Robocop

+ +The **Robocop** view integrates the `https://robocop.readthedocs.io/` linter directly into RoboView, so you can spot and fix structural and style issues in your Robot Framework tests without leaving VS Code. + +

+ Robocop Issues Layout +

+

+[ Left: Error Overview ] [ Middle: Error List ] [ Right: Error Details ] + + +

+ robocop_issues +

+ + +
+ +### How it works + +- **Left: Error Overview** + The left panel shows a compact **overview of all detected issues**, for example: + - Total number of Robocop findings + - Issues grouped by **rule** or **category** + - A quick way to see which types of problems are most common + This helps you understand the overall state of your project at a glance. +- **Middle: Error List** + The middle panel contains the **list of individual Robocop issues**. + Each entry typically shows: + - The **file** where the issue was found + - The **rule id** and short **message** + - The **line** number in the file + + You can scroll through this list and select a specific issue to inspect it in detail. + +- **Right: Error Details** + The right panel displays **details for the currently selected issue**, including: + - The full Robocop message + - The rule id and its description + - The file and line information + - Additional context that helps you understand why this issue was reported + +
+ +--- + +## 🔮 Outlook + +RoboView is an actively evolving project. ✨ +We’re continuously adding new features, polishing existing workflows, and exploring fresh ideas to make working with Robot Framework even more enjoyable. 💡 + +We’re happy to have you along for the journey – stay tuned for new releases and improvements! 🚀 \ No newline at end of file diff --git a/packages/roboview/pyproject.toml b/packages/roboview/pyproject.toml index bae36f3..7f2c118 100644 --- a/packages/roboview/pyproject.toml +++ b/packages/roboview/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "robotframework-roboview" -version = "0.0.1" +version = "0.0.3" description = "RoboView is a Visual Studio Code extension designed to help you manage keywords within your Robot Framework projects and improve overall test quality through built-in Robocop integration. Its primary goal is to provide a comprehensive overview of all keywords and their relationships, making it easier to understand and maintain your test automation codebase." license = "Apache 2.0" authors = ["viadee Unternehmensberatung AG"] diff --git a/pyproject.toml b/pyproject.toml index f5cff9f..209c7b9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] -name = "robotframework-roboview" -version = "0.0.1" +name = "robotframework-roboview-meta" +version = "0.0.3" description = "RoboView is a Visual Studio Code extension designed to help you manage keywords within your Robot Framework projects and improve overall test quality through built-in Robocop integration. Its primary goal is to provide a comprehensive overview of all keywords and their relationships, making it easier to understand and maintain your test automation codebase." license = "Apache 2.0" authors = ["viadee Unternehmensberatung AG"]