Skip to content

Project Explorer

The Project Explorer is the screen at the route /explorer. It is where you look inside your test project. On the left it shows a file tree — a collapsible, indented list of every folder and file Testver scanned in your project. On the right it shows a file viewer that opens whatever file you click and displays it in the most useful way for that file’s type.

Project Explorer screen overview

The screen is split into two side-by-side panels. The dividing line between them can be dragged left or right, so you can give more room to the tree when you are hunting for a deeply-nested file, or more room to the viewer when you are reading a long test.

Think of it like the file browser built into a code editor such as VS Code: a navigable tree on one side, the open document on the other. The difference is that Testver’s viewer is test-aware — it recognizes feature files, Robot files, data tables, API definitions, and step definitions, and presents each in a purpose-built view instead of plain text.

  • Test authors who want to read or tweak .feature, .robot, or step-definition files without leaving Testver.
  • QA engineers reviewing what tests exist and how the project is laid out.
  • Developers who need to inspect data files, API definitions, configuration, or source code that the tests depend on.
  • Team leads who want to see the git history of a specific file or check what has changed but not yet been committed.
  • Anyone who needs to make a quick edit and save it back to disk without opening a separate editor.
TermWhat it means here
File treeThe indented, collapsible list of folders and files in the left panel. Folders can be expanded to reveal their contents.
NodeA single entry in the tree — either a folder (directory) or a file.
Expand / CollapseOpen a folder to show its children, or close it to hide them. Chevron arrows show the state.
FilterTyping in the search box to narrow the tree down to files whose name (or a parent folder’s name) contains your text.
Syntax highlightingColoring code keywords, strings, and structure so files are easier to read.
Line numbersThe running count down the left edge of the viewer that lets you refer to a specific line.
BreadcrumbA horizontal trail of folder names (Home > folder > subfolder) showing where a file sits, with each part clickable.
Specialized viewA purpose-built presentation for a known file type — e.g. a scenario list for Gherkin, a grid for CSV.
Edit modeA state where the viewer becomes a writable editor. Triggered by the Edit button.
Diff / ChangesA line-by-line comparison showing what has changed in a file but not yet been committed to git.
CommitA saved snapshot in git’s history. The History panel lists the commits that touched a file.
Step definitionCode that implements a Gherkin step. Testver can list these as an outline you can click to jump to.
Unsaved changesEdits you have typed but not yet saved to disk. Testver warns you before you lose them.

When you open the screen, Testver requests the file tree for your project and renders it on the left. The tree is cached briefly, so re-opening the screen is instant.

When you click a file, Testver reads that file’s contents and its metadata (language, line count, and any extracted structure such as scenarios, keywords, endpoints, or steps). It then picks the best viewer for the file type and shows it on the right.

When you enter Edit mode and press Save, the new contents are written back to the file on disk. There is no separate “apply” step — saving updates the real file in your project folder.

  1. From anywhere in Testver, navigate to the Explorer entry in the main navigation (route /explorer).
  2. Wait for the tree to load — you will briefly see a Loading project tree… indicator.
  3. Once loaded, the left panel lists your top-level folders and files, and the right panel shows a placeholder prompting you to select a file.
  4. Click any file in the tree to open it in the viewer on the right.
AreaWhereWhat it contains
Tree toolbarTop of the left panelThe Explorer label, a live file count (e.g. “128 files”), and the Expand all / Collapse all buttons.
Filter boxBelow the tree toolbarA search icon, a Filter files… text input, and a clear (X) button that appears once you type.
File treeBody of the left panelThe scrollable, indented list of folders and files with color-coded icons.
Resize handleThin vertical strip between the two panelsDrag left/right to change the tree panel’s width.
File toolbarTop of the right panelThe file path, status badge, line count, language, git buttons, and the Edit / Save / Cancel / Run buttons.
Git panelJust below the file toolbar (when open)The History or Changes panel for the open file.
File viewerBody of the right panelThe actual file content rendered by the appropriate viewer.
DialogsCentered overlayThe Unsaved Changes confirmation dialog, when applicable.
  • The left panel width starts at 280 pixels and can be dragged between 200 and 500 pixels.
  • Folders always sort before files, and within each group entries are sorted alphabetically.
  • Folder icons are amber; file icons are color-coded by type (see the icon table below).
  • The right panel shows Select a file to view its contents until you click something.
  • Press Ctrl+F (or Cmd+F on Mac) to jump straight to the filter box.

The file tree is the heart of the left panel. It mirrors the folder structure of your project, with directories you can open and close and files you can click to view.

Each folder shows a chevron on its left edge: a right-pointing chevron (collapsed) or a down-pointing chevron (expanded). Clicking a folder row toggles it open or closed. Open folders also switch their icon from a closed Folder to an open FolderOpen icon.

  1. Click a folder row to expand it and reveal its contents indented beneath it.
  2. Click the same folder again to collapse it and hide its contents.
  3. Hover over a folder to see a small file count badge on the right showing how many files it contains (counted recursively).
  4. Use Expand all (the double-chevron-apart icon in the tree toolbar) to open every folder in the whole tree at once.
  5. Use Collapse all (the double-chevron-together icon) to close everything back down to the top level.

The Filter files… box at the top narrows the tree to matching entries as you type. A file matches if its name contains your text; a folder is kept if it matches or if any file inside it matches, so the path to a match stays visible.

  1. Press Ctrl+F (or Cmd+F) anywhere on the screen to focus the filter box. (If your cursor is inside the code editor, this shortcut is left to the editor’s own find, so it will not steal focus.)
  2. Type part of a file or folder name. The tree updates instantly to show only matches and their ancestor folders.
  3. Click the X button that appears at the right of the filter box to clear it and restore the full tree.
  4. Delete your text manually to achieve the same result.

Every file gets a color-coded icon based on its name or extension. Special full filenames (like package.json or Dockerfile) are matched first; otherwise the extension decides. Unknown types fall back to a plain gray file icon.

File type / patternIconColor
.ts, .tsx (TypeScript)CodeBlue
.d.ts (type declarations)CodeLight blue
.js, .jsx, .mjs, .cjs (JavaScript)CodeYellow
.py, .pyw (Python)CodeSky blue
.javaCoffee cupOrange
.kt (Kotlin) / .scalaCoffee cupPurple / Red
.cs (C#)HashGreen
.csproj, .slnSettings gearLight green
.rb (Ruby)CodeRed
.feature (Gherkin/BDD)LeafEmerald
.robot (Robot Framework)TerminalTeal
.json, .jsoncBracesYellow
.yaml, .ymlTextOrange
.tomlTextGray
.html, .htm / .xmlGlobeOrange
.css / .scss, .sass / .lessPaletteBlue / Pink / Indigo
.md, .mdx (Markdown)Open bookGray
.txt, .rstTextGray
.csvDatabaseGreen
.sql / .db, .sqliteDatabaseBlue / Amber
Images: .png, .jpg, .jpeg, .gif, .webp, .icoImagePink
.svgImageAmber
.env and .env.*LockYellow
.ini, .conf, .cfg, .propertiesCogGray
Shell: .sh, .bash, .zshTerminalGreen
.bat, .cmd / .ps1TerminalGray / Light blue
Archives: .zip, .tar, .gzPackageAmber
Security: .pem, .key, .certShieldRed
package.json / package-lock.jsonPackageGreen / Light green
pnpm-lock.yaml / yarn.lockPackageAmber / Light blue
tsconfig.json, vite.config.ts, webpack.config.jsSettings gearBlue / Purple / Blue
.gitignore, .eslintrc.json, .prettierrcSettings gearGray / Purple / Pink
Dockerfile, docker-compose.ymlFile-typeBlue
Makefile / GemfileTerminal / TextAmber / Red
requirements.txt, pom.xml, build.gradleText / SettingsSky / Orange / Green
Anything elsePlain fileGray

Within every folder, entries are grouped so that directories come first, then files. Inside each of those groups, entries are sorted alphabetically by name (case-insensitive natural order). This ordering is fixed; there are no sort options to change.

Click any file row to open it in the viewer on the right. The selected row is highlighted with a tinted background and a thin accent bar down its left edge, and its name is shown in a slightly heavier weight.

  • Hovering over a file reveals a small language badge on the right (e.g. “gherkin”, “python”) when the file’s language is known.
  • Hovering over any row shows its full path as a tooltip.
  • Clicking a folder never opens the viewer — it only expands or collapses that folder.

A thin vertical resize handle sits between the tree and the viewer. The cursor changes to a horizontal resize arrow when you hover it, and the handle tints toward the brand color while you drag.

  1. Move your pointer to the thin strip between the two panels until the cursor becomes a left-right resize arrow.
  2. Press and hold, then drag left to shrink the tree or right to widen it.
  3. Release to set the new width. The width is clamped between 200 and 500 pixels.

The right panel renders the file you selected. A toolbar across the top shows the file path and controls; below it is the content area, which adapts to the file’s type.

The toolbar always shows, from left to right: the full file path (in a monospace font), a status badge while editing, the line count (e.g. “312 lines”), the language (e.g. “python”), then the git and action buttons described below.

For ordinary code and text files, the viewer uses a full code editor (Monaco — the same engine that powers VS Code). This gives you syntax highlighting colored by language, line numbers down the left edge, code folding, and smooth scrolling. In read-only mode the content cannot be changed; in edit mode it becomes fully editable.

Testver inspects the file’s language and extracted metadata and chooses the most useful presentation. These specialized views are read-only — the moment you enter edit mode, every file type falls back to the plain code editor so it can be edited, including .feature files.

File type / conditionHow it is shown
Gherkin .feature (read-only)A structured Gherkin view that lays out the feature, its scenarios, and steps in a readable form rather than raw text.
Robot .robot (read-only)A Keyword view that presents the Robot file with its keywords surfaced for easy scanning.
Data files — .csv, data .json, .yaml (read-only)A DataTable view that renders the rows and columns as a grid.
Files with API endpointsAn API Endpoint view is shown at the top listing the detected endpoints, with the full code editor beneath it (so you see both the summary and the source).
Files with step definitionsThe code editor with a unified Outline panel listing each step; clicking a step jumps the editor to the matching line.
HTML .htmlA dedicated HTML viewer (editable when in edit mode).
Everything elseThe standard code editor with syntax highlighting and line numbers.

The viewer can scroll to and briefly highlight a specific line. This happens in three situations:

  • Deep links — opening /explorer?file=...&line=42 reveals and highlights line 42 once the editor finishes loading.
  • Step outline clicks — in a step-definition file, clicking a step in the outline finds the matching implementation line and reveals it. Testver tries an exact match first, then a simplified match, then a fuzzy keyword match.
  • The highlight is a temporary colored band on the whole line that fades after about 1.5 seconds, and the editor also scrolls that line to the center and places the cursor there.

The toolbar buttons change depending on whether you are viewing or editing.

ButtonWhen it appearsWhat it does
EditAlways, when not already editingSwitches the viewer into edit mode. The current content becomes editable and is remembered as the baseline for change detection.
Cancel (X icon)While editingDiscards all edits and returns to read-only view without saving.
Save (disk icon)While editingWrites the edited content to the file on disk, shows a “File saved” toast, and exits edit mode. Shows “Saving…” and is disabled while the save is in progress.
Run (play icon)Only for files whose type is a test, and only when a run handler is wired upStarts a test run for this file.
HistoryWhen git is available for the projectToggles the git History panel for this file (see 4.6).
ChangesWhen git is available AND this file has uncommitted changesToggles the git Changes (diff) panel for this file (see 4.6).

While you are in edit mode, a small badge appears next to the file path:

  • EDITING — you are in edit mode but have not yet changed anything from the original content.
  • MODIFIED — you have made at least one real change to the content. This is the trigger for all the unsaved-changes safeguards.

When the project is under git, two extra buttons can appear in the toolbar, each opening a panel that slides in between the toolbar and the viewer (capped at roughly 40% of the screen height, with its own scrollbar).

Click History to see the list of commits that have touched the open file. The button highlights in blue while the panel is open. Click it again to close. The panel loads the file’s commit history on demand and shows a loading state while fetching.

The Changes button only appears when the open file has uncommitted changes. Click it to see the line-by-line diff of what differs from the last commit. The button highlights in amber while open. Click it again to close. Like History, it loads its data on demand.

Once a file is MODIFIED, Testver guards against losing your work in several ways. The exact dialog depends on how you tried to leave.

SituationWhat happensYour choices
You click another file in the treeAn Unsaved Changes dialog appears asking what to do before switching.Discard Changes (switch and lose edits), Save & Switch (save then switch), or close the dialog / click the backdrop to stay on the current file.
You navigate away via the sidebar or another routeA route-blocking Unsaved Changes dialog appears warning your changes will be lost.Discard & Leave, Save & Leave, or close / click the backdrop to stay on the page.
You close or reload the browser tabThe browser’s own native “leave site?” prompt appears.Confirm to leave (losing edits) or cancel to stay — handled by the browser, not Testver.
A save fails during Save & Switch / Save & LeaveAn error toast is shown and you remain on the current file with edits intact.Fix the issue and try again, or choose Discard.

Both Testver dialogs use the same design: an amber warning icon, the heading Unsaved Changes, an explanatory line, and the action buttons. The Save action shows “Saving…” while in progress and is disabled until it completes.

Testver includes a breadcrumb component that renders a horizontal trail showing where a file or folder sits in the project: a Home icon at the start, followed by each folder name separated by chevrons, ending in the current item shown in a brighter, heavier style.

  • Clicking the Home icon navigates to the project root (an empty path).
  • Clicking any folder name in the trail navigates to that folder’s level.
  • The final segment (the current item) is emphasized in lighter text and a medium weight.
  • Long names are truncated and the whole trail scrolls horizontally if it overflows.
I want to…Do this
Find a file fastPress Ctrl+F, type part of its name, then click it in the filtered tree.
Open every folder at onceClick Expand all (double chevrons apart) in the tree toolbar.
Tidy the tree back upClick Collapse all (double chevrons together).
Read a .feature file nicelyJust click it — the Gherkin view renders scenarios and steps automatically.
See a data file as a tableClick a .csv, data .json, or .yaml file; the DataTable grid appears.
Edit a fileOpen it, click Edit, make your changes, then click Save.
Throw away edits I just madeClick Cancel (the X in the toolbar).
Jump to a step’s implementationOpen the step-definition file and click the step in the Outline panel.
See who changed this file and whenClick History (visible when git is available).
See exactly what I changed but haven’t committedClick Changes (visible when the file has uncommitted changes).
Run a test file directlyOpen it and click Run (shown for test files when running is enabled).
Give the tree more roomDrag the resize handle between the panels to the right (up to 500px).
Switch files without losing editsWhen prompted, choose Save & Switch.
  • Use the filter instead of scrolling — it is the quickest way to reach a deeply-nested file, and it keeps parent folders visible so you still see context.
  • Remember the filter searches names only, not contents; if you need to find text inside files, search within the open file using the editor’s own find.
  • Watch the MODIFIED badge — it is your signal that the safety net is armed. If it still says EDITING, you have not actually changed anything yet.
  • Before a big edit on a tracked file, open the Changes panel afterward to review your diff before committing elsewhere.
  • Use History to understand a file before changing it — recent commits often explain why something is the way it is.
  • Specialized views are read-only by design; switch to Edit when you need to change a .feature, data, or HTML file, and the plain editor will take over.
  • Drag the panel divider to a comfortable width once and it stays put while you work on the screen.
  • Deep links (?file=...&line=...) are great for sharing an exact spot in a file with a teammate.

The tree is empty or says “No project files”

Section titled “The tree is empty or says “No project files””

Testver found no files to show. Confirm a project is loaded and that it actually contains files. The empty state shows a folder icon with No project files / No files found in this project.

If a file fails to load you will see an Error loading file message with the error detail. Try selecting another file and back; if it persists, the file may be unreadable, binary, or too large.

I don’t see the History or Changes buttons

Section titled “I don’t see the History or Changes buttons”

History only appears when git is available for the project. Changes appears only when git is available and the open file has uncommitted changes. If a file has no pending changes, the Changes button is correctly hidden.

If your cursor is inside the code editor, Ctrl+F is intentionally left to the editor’s own find feature. Click somewhere outside the editor (e.g. the tree) first, then press Ctrl+F to reach the file filter.

I clicked a folder but nothing opened on the right

Section titled “I clicked a folder but nothing opened on the right”

That is expected — clicking a folder only expands or collapses it. Click a file to open it in the viewer.

My specialized view disappeared when I clicked Edit

Section titled “My specialized view disappeared when I clicked Edit”

Also expected. Specialized views (Gherkin, Robot, DataTable) are read-only presentations. Entering edit mode swaps in the plain code editor so the file can be modified; press Cancel or Save to return to the specialized view.

I got an “Unsaved Changes” dialog I didn’t expect

Section titled “I got an “Unsaved Changes” dialog I didn’t expect”

It appears whenever the file is MODIFIED and you try to switch files, navigate away, or close the tab. Choose Save to keep your work, Discard to drop it, or stay put. If you truly made no changes, the dialog will not appear — undo back to the original to clear the MODIFIED state.

Yes. Save writes directly to the file on disk in your project folder. There is no separate apply step and no built-in undo after saving — rely on git (via the History/Changes panels or your own tooling) to recover earlier versions if needed.