Settings
Introduction
Section titled “Introduction”What is the Settings screen?
Section titled “What is the Settings screen?”The Settings screen (route /settings) is Testver’s central control panel. From a single page you configure how the application looks, which testing surfaces are visible, exactly how your tests are launched on the command line, which AI providers and models power Testver’s intelligent features, and which live browser processes are currently running on the server. Everything here is scoped to your project and persists between sessions.
Who this guide is for
Section titled “Who this guide is for”- QA engineers and testers who need Testver to launch their existing test suite correctly (single test, whole file, full run).
- Developers wiring up AI features who need to add an API key, register models, and pick a default provider.
- Team leads / workspace admins who set the App Mode (Web vs Mobile) and manage browser sessions across all users.
- Anyone who wants to switch between the light and dark theme or check basic project information.
Key terms
Section titled “Key terms”| Term | Meaning |
|---|---|
| Provider | An AI service that supplies language models — e.g. OpenAI, Anthropic, Google AI, xAI, or a local server like Ollama / LM Studio. Configured on the LLM tab. |
| Model | A specific named AI model offered by a provider, such as gpt-4o, claude-sonnet, or gemini-2.0-flash. Each provider holds a library of models, one of which is marked active. |
| API key | A secret credential that authorizes Testver to call a cloud AI provider. Entered per provider on the LLM tab; cloud providers require one, local providers do not. |
| App mode | A workspace-wide setting (Web or Mobile) that controls which Testver surfaces — Runner, Recorder, Schedules, AI Assistant — are shown. Set on the General tab. |
| Run command | The exact shell command Testver uses to execute your tests. There are three: Single Test, Suite / File, and Full Run. Defined on the General tab under Run Commands. |
| Env var (environment variable) | A KEY=value pair injected into the environment when your tests run. Used for things like credentials or flags; managed under Run Commands → Advanced Settings. |
How settings take effect
Section titled “How settings take effect”- Most settings are saved per project on the Testver server and survive restarts.
- Run Commands are only stored as an override when you change them away from the auto-detected default — otherwise Testver keeps using its detected command, so future framework changes are still picked up automatically.
- LLM provider settings (API keys, model libraries, base URLs, timeouts) are saved per provider when you click Save. The default provider can also come from an environment variable instead of being typed in.
- App Mode is workspace-wide: changing it reloads Runner, Recorder, Schedules, and AI Assistant for every user in the workspace.
- Theme (light/dark) is applied instantly and remembered locally in your browser.
- Browser Sessions are live server state, not saved configuration — the list refreshes automatically every few seconds.
Getting Started
Section titled “Getting Started”Opening Settings
Section titled “Opening Settings”- Open Testver and make sure a project is loaded.
- Click the Settings entry (gear icon) in the navigation, or browse directly to
/settings. - The page opens on the General tab by default. The current tab is reflected in the URL via the
tabquery parameter (for example/settings?tab=llm), so you can bookmark or share a direct link to a specific tab.
The Settings tabs
Section titled “The Settings tabs”Three tabs run across the top of the Settings screen. Click any tab to switch; the active tab is underlined in the brand color.
| Tab | Icon | What it covers |
|---|---|---|
| General | Palette | Project info & appearance — App Mode, Project Information, Run Commands, and the theme toggle. |
| LLM | Brain | AI provider configuration — API keys, model libraries, default provider, base URLs, and timeouts. |
| Browser Sessions | Server | Active browser processes — view and close server-side, local, and test-run browser sessions. |
At a glance
Section titled “At a glance”- Start on General to confirm your project details and make sure your test run commands are correct.
- Move to LLM to plug in at least one AI provider if you want Testver’s AI-powered features (such as Suggest with AI for run commands).
- Use Browser Sessions when you need to see or shut down browsers Testver has launched.
- Use the theme toggle on General any time to switch between light and dark mode.
General Tab: App Mode
Section titled “General Tab: App Mode”The App Mode card sits at the top of the General tab. App Mode controls which Testver surfaces are visible across the entire workspace — the Runner, Recorder, Schedules, and AI Assistant pickers all adapt to this setting. The card shows when the mode was last changed.
| Option | What it does |
|---|---|
| Web tile | Sets the workspace to web testing only — shows just the web testing UI. Accented in sky blue. |
| Mobile tile | Sets the workspace to mobile testing only — shows just the mobile testing UI. Carries a Beta badge and an indigo accent. |
| Confirmation dialog | Clicking a different tile does not switch immediately. A Change App Mode? dialog appears explaining the impact before you confirm with Switch to <mode> (or Cancel). |
| Last changed date | Displayed at the top-right of the card when the mode has been set before, showing the date of the most recent change. |
Project Information
Section titled “Project Information”The Project Information card is read-only. It summarizes what Testver has detected about your project so you can confirm it loaded the right codebase.
| Field | What it shows |
|---|---|
| Framework | The detected test framework, or Auto-detected if not explicitly set. |
| Language | The project’s primary language, or Multiple when several are present. |
| Path | The absolute root path of the project on disk (shown in monospace). |
| Modules | The total number of modules Testver found. |
| Total Files | The total number of files scanned in the project. |
Run Commands
Section titled “Run Commands”The Run Commands card defines exactly how Testver launches your tests. Testver auto-detects sensible commands for your framework (shown as a badge next to the heading) and pre-fills them. You can edit any of the three commands, test them, reset them to the detected default, or have AI suggest them.
There are three command fields, each in its own panel with Reset and Test buttons and an Auto-detected / Custom badge:
| Command field | What it does |
|---|---|
| Single Test | Runs a single test/scenario by name. |
| Suite / File | Runs all tests in one file or suite. |
| Full Run | Runs the entire test suite. |
Each field’s controls:
| Control | What it does |
|---|---|
| Custom / Auto-detected badge | Shows whether the current value differs from the detected default (Custom) or matches it (Auto-detected). |
| Reset | Restores the field to Testver’s auto-detected default command. |
| Test | Dry-runs the command (placeholder tokens are substituted with harmless dummy values) and reports Command is valid or Command failed, with a snippet of the output. |
| Command input | The editable shell command, shown in monospace. The placeholder text is the auto-detected default. |
Placeholder tokens — commands may include tokens that Testver replaces at runtime with the real test name, file path, and so on. Each token chip on the card is click-to-copy. The available tokens:
| Token | Replaced with |
|---|---|
| {test} | Test name |
| {suite} | Suite name |
| {line} | Start line number |
| {args} | Extra arguments |
| {file} | Relative file path |
| {absFile} | Absolute file path |
| {posixFile} | Forward-slash path (useful for WebdriverIO —spec on Windows) |
| {fileName} | File name |
| {fileNoExt} | File name without extension |
| {project} / {cwd} / {root} | Project root directory |
Suggest with AI — the button beside the Run Commands heading lets AI inspect your project and propose all three commands.
| Element | What it does |
|---|---|
| Suggest with AI button | Sends your project to the AI, which analyzes it and returns proposed Single Test, Suite/File, and Full Run commands. Shows Analyzing project… while it works. |
| Suggestion cards | Each proposed command shows a confidence percentage, a validation badge (checking / resolves / unverified), the command in monospace, and a short rationale. |
| package.json script badge | Appears when the suggestion reused an existing npm script from your project. |
| Apply (per card) | Fills that one field with the suggested command (review and Save to persist). |
| Apply all | Fills all three fields with the suggestions at once. |
| Discuss in AI Assistant | Hands off to the full AI Assistant with a context-rich seed prompt for complex cases (does not auto-submit). |
| Dismiss (X) | Closes the suggestion panel without applying anything. |
Advanced Settings
Section titled “Advanced Settings”Clicking Advanced Settings expands extra options below the three command fields.
| Option | What it does |
|---|---|
| Environment Variables | Add any number of KEY / value pairs that are injected into the environment when your tests run. Use Add Variable to add a row and the X button to remove one. Empty rows are ignored on save. |
| Before Command | A shell command run before your tests (for example npm run build). |
| After Command | A shell command run after your tests (for example npm run cleanup). |
Click Save Run Commands at the bottom of the card to persist everything. Testver only stores a command as a custom override when it differs from the auto-detected default; the working directory, before/after commands, and non-empty env vars are saved as entered.
Appearance & Theme
Section titled “Appearance & Theme”Testver supports a light and a dark theme. The theme toggle flips between them, and your choice is remembered locally in the browser and applied instantly across the app — no save button required. The current theme is read on load so Settings always reflects what you last picked.
LLM Providers & Models
Section titled “LLM Providers & Models”The LLM tab lists every AI provider Testver supports as an expandable card. Each card shows the provider name, a short description of its models, a status indicator, and a star to mark it as the default provider. Click a card header to expand its configuration form.
| Provider | Models / role | Needs API key? |
|---|---|---|
| OpenAI | GPT-4o, GPT-4, GPT-3.5 Turbo | Yes |
| Anthropic | Claude Sonnet, Claude Opus, Claude Haiku | Yes |
| Google AI | Gemini 2.0 Flash, Gemini Pro | Yes |
| xAI | Grok-2, Grok-3 | Yes |
| Ollama | Local models — Llama, Mistral, Phi, etc. | No (local) |
| LM Studio | Local model server | No (local) |
Provider status — the colored dot and label on each collapsed card tell you how the provider is configured:
| Status | Meaning |
|---|---|
| Not Configured (gray) | No key or settings saved for this provider yet. |
| Configured (green) | An API key has been saved in Testver’s config. |
| Env Var (green) | The API key is supplied via an environment variable rather than typed into Testver. |
| Local (amber) | A local provider (Ollama / LM Studio) that runs models on your own machine. |
Default provider — the star icon on each card header sets that provider as the workspace default. The current default shows a filled amber star and a DEFAULT badge. Clicking the star on another provider switches the default immediately.
Configuring a provider
Section titled “Configuring a provider”Expanding a provider card reveals its full form. The exact fields depend on whether the provider is cloud (needs a key) or local.
| Field | What it does |
|---|---|
| API Key | The secret key authorizing calls to the provider (cloud providers only). Hidden by default; use the eye toggle to reveal it. A saved key shows as dots with a (saved — click to change) hint. If the key comes from an environment variable, a note names the variable instead. |
| Models | The provider’s model library, shown as chips. Click the star on a chip to make it the active model; click the X to remove a model (when more than one exists). |
| Add model input | Type a model name and press Enter or click + to add it to the library. The placeholder suggests the provider’s default model. |
| Base URL | The API endpoint. Optional for cloud providers (defaults to the cloud endpoint) and required for local providers. The active and default URLs are shown beneath when relevant. |
| Timeout (ms) | How long to wait for a response, in milliseconds. Leave blank for the default — 60s for cloud providers, 5 min for local providers. |
| Test Connection | Pings the provider with the current key/URL/model and reports success or failure along with the response latency in milliseconds. |
| Save <provider> | Persists this provider’s API key (only if newly entered), model library, active model, base URL, and timeout — plus any pending default-provider change. |
Browser Sessions
Section titled “Browser Sessions”The Browser Sessions tab lists every active browser session this Testver server is tracking and lets you close them. The list refreshes automatically every few seconds, and you can also click Refresh to update it on demand. Sessions come from three sources, each with its own colored badge:
| Source | Badge | What it is |
|---|---|---|
| Server | Server (brand) | A server-side per-tab browser process — one per active /ai tab using server-side mode. Shows start time, process id (pid), and tab count. |
| Local | Local (green) | A local-browser connector running on a user’s own machine. Shows connect time, machine, OS, and tab count. |
| Test run | Test run (amber) | An active test-execution run (for example npx playwright test). Shows start time, framework, pid, and the running command. |
Header and summary — the top card shows total counts and, for admins, controls to widen the view:
| Element | What it does |
|---|---|
| Show all users / Showing all users | Admin toggle that switches between only your sessions and every user’s sessions. |
| Refresh | Reloads the session list immediately. |
| Summary stats | Shows totals — total sessions, number of users (when more than one), server-side count, and idle count. |
Per-session row — each session shows its browser engine icon, source badge, browser type, owner (in all-users view), and an Idle indicator when inactive for over 5 minutes. The Close button on a row opens a confirmation dialog describing exactly what will be torn down (and warns if active tabs are using it) before terminating that browser process.
Bulk close — when sessions exist, a Bulk close card offers scoped shutdowns. Closing is graceful: the backend waits up to 5 seconds for in-flight actions to settle. Each scope prompts for confirmation first.
| Bulk action | What it does |
|---|---|
| My sessions | Closes every browser session you currently own. Available to all users. |
| All server sessions | (Admin) Closes every server-side per-tab browser process to free server RAM; leaves local connectors and test runs alone. |
| Idle > 30m | (Admin) Closes every session idle for more than 30 minutes; active sessions are unaffected. |
| All sessions | (Admin) Closes every active session for every user, including local connectors and running tests. Use only during maintenance windows. |
Common Tasks (How Do I…?)
Section titled “Common Tasks (How Do I…?)”| I want to… | Do this |
|---|---|
| Fix how a single test runs | General → Run Commands → Single Test, edit the command (use placeholder tokens), click Test, then Save Run Commands. |
| Let AI figure out my run commands | General → Run Commands → Suggest with AI, review each suggestion, click Apply or Apply all, then Save Run Commands. |
| Add environment variables for test runs | General → Run Commands → Advanced Settings → Environment Variables → Add Variable, fill KEY and value, then Save Run Commands. |
| Run a build step before tests | General → Run Commands → Advanced Settings → Before Command, enter the command, then Save Run Commands. |
| Connect an AI provider | LLM, expand the provider, enter the API Key, add/select a model, click Save <provider> (use Test Connection to verify). |
| Add a model to a provider | LLM, expand the provider, type the model name in the add-model box, press Enter, star it to make it active, then Save. |
| Choose the default AI provider | LLM, click the star on the provider card you want as default — it switches immediately. |
| Use a local model (Ollama / LM Studio) | LLM, expand Ollama or LM Studio, set the Base URL, add the model name, then Save — no API key needed. |
| Switch between Web and Mobile | General → App Mode, click the other tile, and confirm in the dialog. |
| Switch light/dark theme | General, use the theme toggle — it applies instantly. |
| See which browsers Testver is running | Browser Sessions — the list auto-refreshes; click Refresh to update now. |
| Close a stuck browser | Browser Sessions, click Close on the row and confirm; or use Bulk close → My sessions. |
Tips & Best Practices
Section titled “Tips & Best Practices”- Use the Test button on each run command and Test Connection on each provider before relying on them — it catches typos and bad keys early.
- Prefer placeholder tokens (
{file},{test},{posixFile}) over hard-coded paths so commands stay portable across machines. - On Windows with WebdriverIO, use
{posixFile}for the--specargument to avoid backslash issues. - Let Suggest with AI do the first draft of your run commands, then refine — it can reuse existing
package.jsonscripts. - Supply cloud API keys via environment variables on shared or CI servers so secrets never live in saved config; Settings will show the source as Env Var.
- Keep a small, focused model library per provider and star the one you actually use as the active model.
- For admins: prefer Idle > 30m over All sessions to reclaim resources without disrupting active users.
- Confirm Project Information matches the codebase you intend to test before configuring anything else.
Troubleshooting & FAQ
Section titled “Troubleshooting & FAQ”| Problem | Likely cause & fix |
|---|---|
| A run command fails the Test | The binary or script can’t be resolved. Check the command, install missing dependencies, or Reset to the auto-detected default and re-test. |
| My edited command keeps reverting to the default | It only saves as a custom override if it differs from the auto-detected value. Make sure your edit is actually different, then click Save Run Commands. |
| Suggest with AI shows an error | AI couldn’t analyze the project. Use the Try in the AI Assistant instead link, or open Discuss in AI Assistant to work it out interactively. |
| Test Connection fails for a provider | Wrong or missing API key, wrong Base URL, or an unreachable local server. Verify the key (eye toggle), confirm the URL, and ensure local servers (Ollama / LM Studio) are running. |
| My API key field shows dots, not my key | The key is saved and masked for security. Click the field to clear it and type a new one; an env-var key shows a note naming the variable instead. |
| A provider stays Not Configured after saving | You may have saved without entering a key, or only changed a model. Re-open the card, enter the API Key, and Save again. |
| App Mode change hid a surface I needed | App Mode is workspace-wide. Switch back via General → App Mode; saved schedules and history remain on disk and reappear. |
| A browser won’t appear in Browser Sessions | Sessions only show when you launch a browser via /ai, register a Local Browser connector, or start a test run. Click Refresh. |
| I closed a session but it’s still listed | Bulk close is graceful and waits up to 5s for in-flight actions. Wait for the auto-refresh or click Refresh. |
| The theme didn’t change | The theme is stored locally in your browser; clearing site data resets it. Toggle it again from the General tab. |
Related
Section titled “Related”- Local Browser Connector — token-based local browser routing.
- Connectors — external integrations.
- Admin → Users — user-level security.