Write tests in plain English.
We confirm they pass, visually.

No selectors. No broken CI pipelines. No XPath.

glanciq
Visual AI testing, written in plain English.
No selectors
No code
No setup
Testing today is fragile.
One small UI change breaks everything.
Here's what that looks like →
login-flow.spec.ts — acme-web — Visual Studio Code
Explorer
 acme-web
 e2e
✕ login-flow.spec.ts
✕ nav.spec.ts
✕ dashboard.spec.ts
· auth.spec.ts
 src
· playwright.config.ts
 login-flow.spec.ts
nav.spec.ts
playwright.config.ts
acme-webe2elogin-flow.spec.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import { test, expect } from '@playwright/test';
test.describe('Login flow', () => {
// beforeEach: navigate to login page
test.beforeEach(async ({ page }) => {
await page.goto('https://staging.acme.io');
});
test('login via Okta SSO', async ({ page }) => {
await page.click('[data-testid="okta-sso-btn"]');
await page.fill('#username', process.env.TEST_USER);
await page.fill('#password', process.env.TEST_PASS);
await page.click('.nav-tab--active'); // ← No element found
});
test('Home tab active after login', async ({ page }) => {
await page.waitForSelector('[data-testid="home-tab"]');
await expect(page.locator('.nav__tab.is-active')).toHaveText('Home');
});
test('nav item highlight correct', async ({ page }) => {
await expect(tab).toHaveClass(/tab--selected/); // renamed in redesign
});
Output
Terminal
Problems 8
$ npx playwright test e2e/login-flow.spec.ts
Running 3 tests using 1 worker
[chromium] › login-flow.spec.ts:10 › Login flow › login via Okta SSO
[chromium] › login-flow.spec.ts:17 › Login flow › Home tab active after login
[chromium] › login-flow.spec.ts:22 › Login flow › nav item highlight correct
Error: locator.click: No element matching selector '.nav-tab--active'
- waiting for locator('.nav-tab--active') resolved to 0 elements
at e2e/login-flow.spec.ts:14
Error: expect(locator).toHaveText() — No element found for selector: .nav__tab.is-active
Caused by: UI class names renamed in v2.4.0 redesign
3 failed  [2.1s]
✕ 8   ⚠ 2
⎇ main
TypeScript
Ln 14, Col 18
Every UI redesign breaks your selector-based tests.
Teams lose hours every sprint.
Fixing selectors. Unblocking CI. Shipping late.
Sound familiar? →
Acme Engineering
Channels
#general
#engineering
#qa-alerts 12
#deploys 3
#design
# engineering
34 members
Today
M
Marcus T.9:04 AM
hey team — CI is all red again on the login-flow tests 🚨 anyone have context on what changed?
😩 4
👀 3
P
Priya R.9:06 AM
design shipped the nav redesign yesterday. all the tab class names changed. .nav-tab--active is now .nav-item[data-active]
every selector-based test that touches the nav is broken
M
Marcus T.9:08 AM
third time this quarter. errors:
✘ FAILED e2e/login-flow.spec.ts
✘ FAILED e2e/nav.spec.ts
✘ FAILED e2e/dashboard.spec.ts
Error: No element matching selector '.nav-tab--active'
Error: No element matching selector '.nav__tab.is-active'
💀 6
S
Sarah K.9:11 AM
@Marcus T. I can fix them but it'll take most of the morning — we have 47 tests that reference nav selectors
J
Jamie D.9:14 AM
this keeps happening every time design updates the component library. we need a test that checks "does the Home tab look selected" — not just whether a class exists. that would survive any CSS rename.
💯 8
👆 5
CI Bot9:15 AM
⛔ Build #1847 failed — acme-web / main
8 tests failed · Branch: main · Caused by: design-system-v2.4 merge
Release blocked until tests are fixed
Message #engineering
Hours of maintenance. Every sprint.
Your UI changed.
Your tests didn't.
There's a better way to test.
Write tests in plain English.
No code. No selectors.
Just describe what to test →
Test Suites
Servers
Reports
staging.acme.io
With Glanciq, describe what you want to test in plain English — no code, no selectors:
Suites
Login flow
Onboarding
Checkout
Settings
Login flow
5 steps · Chrome · Last run: 4 min ago
1
Open app.staging.io in Chrome
2
Click "Login with Okta"
3
Enter username and password
4
Wait for login to complete
5
Confirm the "Home" tab appears visually selected
+
Add a step in plain English...
Runs on a real cloud browser.
Zero setup. No DevOps.
Watch Glanciq execute the test →
Login flow
staging.acme.io
Running on cloud browser — Chrome 124
1
Open app.staging.io in Chrome
2
Click "Login with Okta"
3
Enter username and password
4
Wait for login to complete
5
Confirm the "Home" tab appears visually selected
Cloud browser  ·  Chrome 124  ·  staging.acme.io
Sign in to your account
Welcome back. Use SSO or credentials.
Continue with Okta
or
Acme
Single Sign-On
Secured by OktaNeed help?
Signing you in…
Home
Reports
Projects
Settings
JD
Good morning, Jamie
Here's what's happening with your workspace today.
Revenue
$84.2k
↑ 12.4%
Users
3,241
↑ 8.1%
Tickets
47
↑ 3 today
Uptime
99.9%
30-day avg
Recent projects
ProjectStatusDue
Platform migrationOn trackMay 12
API v3 rolloutAt riskApr 28
Design systemIn reviewMay 3
Activity
Platform migration → On track 2m ago
Marcus commented on API v3 18m ago
Build #1847 deployed to staging 1h ago
Visual AI sees what humans see.
Your tests survive any UI change.
Self-healing. Always.
Every run, a clear verdict.
Pass or fail, with a visual explanation.
See the result →
Login flow
staging.acme.io
Open app.staging.io in Chrome
Click "Login with Okta"
Enter username and password
Wait for login to complete
Confirm the "Home" tab appears visually selected
PASSED  ·  "Home tab appears visually selected"
The Home tab is highlighted with a teal underline indicator and increased contrast compared to inactive tabs.

Inactive tabs (Reports, Projects, Settings) show no underline, no background difference, and reduced color contrast.

Visual distinction is clear and consistent with an active navigation state.
staging.acme.io/home
Home
visually confirmed ✓
Reports
Projects
Settings
Join the waitlist.
Be first to test Glanciq.
You're on the list.
We'll reach out when Glanciq is ready.

How it works

01

Write

Describe your test in plain English — no code required

test: "User can log in
and see the dashboard"
02

Run

Glanciq executes it against a real browser automatically

03

Confirm

Get a visual screenshot + plain English pass/fail report

PASS — Dashboard loaded in 1.2s

Stop writing brittle selectors

Before — Cypress
cy.get('[data-testid="nav-item-3"]')
  .eq(2)
  .find('.dropdown-trigger')
  .should('be.visible')
  .click();
cy.get('.menu-item[aria-label="Settings"]')
  .first()
  .click();
// ❌ Fails after every UI refactor
After — Glanciq
test: "Open Settings from the nav menu"

// ✅ Passes — Glanciq reads your UI
//    the way a human would

"Glanciq reads your UI the way a human would — by looking at it."

Join the waitlist