Record · Build · Library · Team · MFA

QA that works
like you do.

Record tests by using your app. Build tests from a reusable element library. Deploy to a shared team server with user accounts and MFA. AI stabilises selectors, matches known elements automatically, and replays everything — deterministically — every time.

Get started free → See how it works View on GitHub
skopix dashboard
$ SKOPIX_SECRET_KEY="..." skopix start --host 0.0.0.0 --port 9000
✔ Dashboard running at http://141.147.107.213:9000
✔ Team mode · MFA enabled · 4 users online
✔ Step library · 42 elements · 12 folders
── Agent: Adils-Laptop.local (darwin) connected ────
── Replaying: Create Chart With Sort ──────────────
[1/18] CLICK — Login Button ← from library
[5/18] CLICK — Category - Add New Chart Button ← from library
[12/18] CLICK — Chart Editor - Save Chart
[18/18] ASSERT — First row contains 60.00
✔ PASSED · 18 steps · 11.2s · run by adil aslam

Record once.
Replay forever.

No scripting. No selectors. Record by using your app, or build tests from a reusable element library — Skopix handles the rest.

01 — RECORD
Use your app normally
Click Record in the dashboard. A real Chrome window opens. Use your app exactly as a user would — click, type, navigate, scroll. Every action is captured in real time. Add assertions by clicking "+ Assert" in the floating toolbar — pick any element, choose what to check (text, visibility, count, attribute), done.
No code required
02 — AI PROCESSING
AI stabilises & matches
After recording, the LLM rewrites fragile positional selectors into stable ones (pi-test-identifier, aria-label, title, data-testid). It then scans your step library — if a recorded element matches a known library entry, it substitutes the canonical name and selector automatically. New elements go to pending review, not duplicated silently.
Gemini · OpenAI · Ollama
03 — REPLAY
Run it whenever you want
Click replay from All Tests, run a suite in parallel, or trigger from CI. Skopix replays every step deterministically in a headed browser. Smart click disambiguation matches elements by their recorded coordinates when multiple match. Failed steps stop the test and tell you exactly which step and why.
Deterministic · No flakiness
04 — DEBUG
Fix tests at any step
Click the ⏺ button on any step to set a debug point. Skopix replays up to that step automatically — navigating, logging in, filling forms — then hands control back to you in the browser. Record new steps from exactly that state. New steps get AI-processed and inserted back into your test.
No re-recording from scratch
05 — STEP LIBRARY
Build a reusable element library
Harvest UI elements into the step library — name them, store stable selectors, organise into folders. Build new tests entirely from the library using the visual test builder. Every recording auto-matches known elements. Update an element's selector once and it propagates to all tests that use it instantly.
Library · Builder · Auto-sync
06 — TEAM & REPORTS
📋
Full reports + team audit
Every replay generates a full report with video and step-by-step screenshots. Deploy to a cloud server — team members log in with MFA, run tests through their local agent, and all results stream back to the shared dashboard. Audit log tracks exactly who ran what test, when, and from which machine.
Video · MFA · Audit log

One library.
Every test.

Build a catalogue of reusable UI elements. Record a test — known elements are substituted automatically. Update a selector once and every test that uses it updates instantly.

🎯
Harvest elements
Open the harvester, navigate your app, click "Capture" on any element. Name it, store the stable selector, assign a folder. That element is now in the library ready to use in any test.
🔄
Auto-match on record
Record a new test and click through your app. After AI processing, each step is compared against the library. Matching elements get the canonical name and selector substituted automatically — no manual cleanup.
🔨
Visual test builder
Build tests without recording. Pick elements from the library, choose an action (click, type, assert), set a value, preview in a real browser, save. Full debug and replay capability — identical to recorded tests.
One update, all tests
Change an element's selector in the library — every test step using that selector updates instantly. Merge duplicate elements and all tests get the canonical version. Fragile selectors get a warning badge.
📁
Folders & organisation
Organise elements and tests into nested folders. Drag to reorder. Multi-select and move. Folders are separate from tags — tag for filtering, folder for structure. Same organisation system for both the library and All Tests.
Pending review queue
New elements from recordings don't enter the library silently. They queue in pending review — you name them properly, edit the selector if needed, then approve. The amber badge tells you how many are waiting.

Assert anything.
Without writing code.

During recording, click "+ Assert" in the toolbar, pick any element on the page, and choose what to verify. Smart auto-suggestion picks the most appropriate type based on the element.

VISIBLE
Element is present and visible on screen
TEXT CONTAINS
Element's text content includes a substring
TEXT EQUALS
Element's text matches exactly
URL CONTAINS
Current page URL includes a path or query string
ELEMENT COUNT
Exactly N elements match the selector
ATTRIBUTE CONTAINS
title, alt, aria-label, data-* attribute includes value
GENERATED PLAYWRIGHT CODE
// Assert chart renders
await expect(page.locator('.highcharts-container')).toBeVisible();
// Assert top value is correct
await expect(page.locator("span:has-text('60.00')")).toContainText('60.00');
// Assert tooltip explains SVG behaviour
await expect(page.locator('i.fa-question')).toHaveAttribute('title', /SVG equivalent/);

Bring your own AI.
Or run it locally.

Skopix uses AI at one point only — processing your raw recording into stable selectors and Playwright code. Replay is fully deterministic, no LLM involved. Choose whatever fits your setup.

Google Gemini
gemini-2.5-flash (default)
Fast, affordable, excellent at code generation. The recommended default. Free tier available via Google AI Studio. Set GEMINI_API_KEY in config.
OpenAI
gpt-4o-mini · gpt-4o
Reliable choice if you already have OpenAI credits. gpt-4o-mini is the cost-effective option. Set OPENAI_API_KEY in config.
🖥 Ollama (local)
llama3.1 · qwen2.5-coder · any model
Run AI completely on your machine. No API key, no cost, no data leaving your network. Ideal for air-gapped environments or privacy-sensitive codebases. Requires Ollama running locally.
CONFIGURE VIA skopix init OR .skopix.env
# Gemini (default)
SKOPIX_PROVIDER=gemini
GEMINI_API_KEY=AIza...
# OpenAI
SKOPIX_PROVIDER=openai
OPENAI_API_KEY=sk-...
# Ollama (local)
SKOPIX_PROVIDER=ollama
OLLAMA_MODEL=llama3.1
OLLAMA_BASE_URL=http://localhost:11434
💡 Privacy note: AI is only called when you finish a recording. Your test steps (selectors, values, URLs) are sent to the LLM to generate stable selectors and Playwright code. During replay, zero AI calls are made — it's pure deterministic browser automation. If you use Ollama, nothing ever leaves your machine.

Solo, team, or
cloud-hosted.

Run locally for personal use, share with your team on a local server, or deploy to a cloud VM for always-on access with MFA and API key authentication for agents.

⬡ SOLO MODE
Just you
Run the dashboard on your machine. Open at localhost:9000. No authentication, no accounts. Perfect for personal projects, freelance work, or trying Skopix out.
$ npm install -g skopix
$ skopix init
$ skopix dashboard
→ Open http://localhost:9000
⬡ TEAM / CLOUD MODE
You and your team
Mandatory MFA for all users. User accounts with roles. Audit log. Shared step library. API keys for agents. Deploy to Oracle Cloud, Hetzner, or any Linux VM — teammates log in from anywhere, run tests via their local agent.
SKOPIX_SECRET_KEY="long-random-string" \
skopix start --host 0.0.0.0 --port 9000
→ Visit /setup to create the first admin
→ Mandatory MFA on first login for every user
→ Agents connect with API keys — no MFA needed
SHARING WITH REMOTE TEAMMATES
Same office
Teammates connect at http://your-ip:9000 on the same Wi-Fi. Find your IP with ipconfig getifaddr en0.
Remote · Portix tunnel
Run portix 9000 --name skopix for an instant public URL. Teammates open it from anywhere.
Always-on · Cloud VM
Deploy to Oracle Cloud Free Tier, Hetzner (~£4/mo), or any Ubuntu VM. Dashboard runs 24/7 via PM2. Each teammate runs an agent locally — recordings open Chrome on their screen.

Up in under
a minute.

1. INSTALL
$ npm install -g skopix
$ npx playwright install chromium
→ Installs the Skopix CLI and Chromium browser on your machine
2. CONFIGURE YOUR AI PROVIDER
$ skopix init
→ Choose your provider: gemini / openai / ollama
→ Enter your API key (or skip for Ollama)
→ Settings saved to ~/.skopix.env
3A. SOLO MODE — JUST YOU
$ skopix dashboard
→ Open http://localhost:9000 in your browser
→ Click "Record test" to start your first recording
3B. TEAM MODE — ONE COMMAND STARTS EVERYTHING
# Add these to ~/.skopix.env once:
SKOPIX_SECRET_KEY=your-shared-secret
SKOPIX_AGENT_EMAIL=your@email.com
SKOPIX_AGENT_PASSWORD=yourpassword
# Then just run:
$ skopix start
→ Starts the dashboard in team mode
→ Starts and authenticates the agent on your machine automatically
→ Teammates connect via http://YOUR-IP:9000
3C. TEAMMATES — CONNECT AS AN AGENT
# Each teammate runs this on their own machine:
$ npm install -g skopix
$ npx playwright install chromium
# Login with your dashboard credentials (triggers MFA):
$ skopix agent --server http://HOST-IP:9000 --key "your-secret"
# Or use an API key (no MFA — generate one in My Settings):
$ skopix agent --server http://HOST-IP:9000 --key "secret" --api-key sk_live_...
→ Chrome opens on YOUR machine when you trigger tests
→ Results stream back to the shared cloud dashboard
USING OLLAMA (LOCAL AI — NO API KEY NEEDED)
# Install Ollama from https://ollama.ai, then:
$ ollama pull llama3.1
# In ~/.skopix.env or via My Settings in the dashboard:
SKOPIX_PROVIDER=ollama
OLLAMA_MODEL=llama3.1
→ AI runs entirely on your machine. No data leaves. No cost.
HOW IT ALL FITS TOGETHER
Dashboard on a cloud VM
Runs 24/7 via PM2. Everyone visits http://your-ip:9000 and logs in with email + MFA. No local install needed to use the dashboard.
Everyone runs an agent locally
Runs skopix agent on their machine with an API key. Their browser opens when they trigger a recording or replay.
Shared step library
One library, all team members. Record a new test — known elements auto-match. New elements go to pending review. Update a selector once, all tests update.
⚠ AGENT IS REQUIRED TO RECORD AND REPLAY
In team mode, the agent must be running on your machine before you can record or replay tests. The dashboard alone cannot open a browser — the agent is what does the browser work locally. Always start your agent before using the dashboard.
BACKUP YOUR TESTS
# All your tests, suites, sessions and credentials live in one place:
→ ~/.skopix/
# Back up everything to a zip on your Desktop:
$ node skopix-backup.js
→ Creates skopix-backup-2026-05-26.zip on your Desktop
# Restore on any machine (auto-finds the zip on Desktop/Downloads):
$ node skopix-restore.js
→ Restores all tests, suites, sessions and credentials
→ Restart Skopix after restoring
DOWNLOAD BACKUP SCRIPTS
Get skopix-backup.js and skopix-restore.js from the GitHub repo. On Mac, double-click .command wrappers to run without opening a terminal.

Questions.

Do I need to write any code? +
No. You use your app, Skopix records it. The AI generates Playwright code automatically after each recording — you can download the .spec.js or .spec.ts file if you want to run it in CI directly. But you never have to write a selector or a test script yourself.
How is this different from Playwright's own recorder? +
Playwright's recorder generates raw selectors as-is — often fragile positional ones. Skopix uses an LLM to stabilise those selectors into semantic, stable equivalents. Beyond that, Skopix adds a full dashboard, step library with auto-matching, visual test builder, team mode with MFA, cloud deployment, audit log, debug recording, credential management, suite running, and session history with video. It's a complete QA platform, not just a code generator.
What if a selector breaks after a UI change? +
Open the step editor (✏ on any test), find the failing step, and update the selector directly. Or use the ⏺ debug button on that step — Skopix replays everything up to that point in a real browser, then lets you record the correct action from scratch. New steps are AI-processed and inserted automatically.
What is the Step Library? +
The step library is a reusable catalogue of UI elements — each with a name, stable selector, and optional default action. Harvest elements from your app using the harvester tool, or they get added automatically from recordings (pending your review). Once in the library, the visual Test Builder lets you build new tests by picking elements and choosing actions — no recording needed. Update an element's selector once and every test using it updates automatically.
How does MFA work and how do agents authenticate? +
In team mode, MFA is mandatory for all users. On first login, users are prompted to scan a QR code with any TOTP app (Google Authenticator, Authy, 1Password). Every subsequent login requires email + password + 6-digit code. Admins can reset MFA for users who lose their device. For agents running headlessly, use API keys instead — generate one in My Settings, pass it with --api-key sk_live_.... No MFA required for API keys.
How does the login/setup flow work? +
Record your login flow once and mark it as Reusable. In any other test's editor, set that login test as the Setup. When that test runs, Skopix runs the login steps first in the same browser session — so the test starts already authenticated. No duplicating login steps across every test.
Can I store credentials securely? +
Yes. Go to Credentials in the dashboard, create a named credential set (e.g. panintelligence) with username and password. Attach it to a test via the step editor. During replay, Skopix substitutes the stored password into any isPassword: true step — so the real password is never stored in the test YAML, and teammates with different credentials can run the same test.
Can I use Ollama or a local LLM? +
Yes. Install Ollama, pull any model (ollama pull llama3.1 or ollama pull qwen2.5-coder), then set SKOPIX_PROVIDER=ollama and OLLAMA_MODEL=llama3.1 in your .skopix.env. AI runs entirely on your machine — no data leaves, no API costs, works offline. Note: smaller models may produce less stable selectors than Gemini or GPT-4o.
How do remote teammates connect? +
Same office: connect at http://your-ip:9000 on the same network. Remote / cloud: deploy the dashboard to a cloud VM (Oracle Cloud Free Tier, Hetzner ~£4/mo) — teammates connect from anywhere at your public IP. Portix tunnel: run portix 9000 --name skopix for an instant public URL without a server. Each teammate still runs the agent locally — their Chrome opens on their own machine when tests run.
Can I run tests in CI? +
Yes — download the generated Playwright code. Every recording produces a .spec.js and .spec.ts file you can grab from the "View code" button on any test. Drop those into your existing Playwright CI setup and run with npx playwright test. That's the recommended CI path — the generated code is clean, stable, and has no Skopix dependency.
Does replay open a real browser? +
Yes — Skopix opens a real headed Chrome window for recording and replay. This means it needs to run on a machine with a display (your Mac, Windows PC, or Linux desktop). Docker containers don't work for recording or replay because they have no display. The recommended setup is to run Skopix on one team member's machine and have everyone else connect via their browser — no installation required on their end.
How do I update Skopix? +
npm install -g skopix@latest then restart the dashboard. Docker: docker compose pull && docker compose up -d. Your test data in ~/.skopix/ (or the mounted volume) is never touched during updates.
Record. Build. Deploy.
Ship with confidence.

Free. Self-hosted. Step library, team mode, MFA, cloud-ready. One command to get started.

Install now → GitHub Share with Portix