See your interfaces through the lens of intelligence. jpglens analyzes your UI through the context of real user journeys, testing not just functionality, but user experience.
Install jpglens and start analyzing your UI with AI-powered insights.
npm install --save-dev jpglens
yarn add --dev jpglens
pnpm add -D jpglens
Traditional testing tools check if buttons work. jpglens understands if they're intuitive, accessible, and delightful to use.
Advanced AI models analyze your UI through the lens of real user behavior, identifying usability issues humans might miss.
Works seamlessly with Playwright, Cypress, Selenium, Storybook, and Testing Library. One tool for all your testing needs.
Analyze complete user workflows, not just isolated components. Understand how users flow through your application.
Built-in WCAG compliance checking with contextual recommendations for improving accessibility across all user types.
Generate beautiful reports in Markdown, HTML, or JSON. Customizable templates and automated insights for your team.
Customize analysis types, user personas, prompts, and output formats. Adapt jpglens to your specific needs.
jpglens integrates naturally with your existing tests, adding AI-powered insights without changing your workflow.
// tests/checkout.spec.js
import { test } from '@playwright/test';
import { analyzeUserJourney } from 'jpglens/playwright';
test('user can complete purchase', async ({ page }) => {
await page.goto('/checkout');
// Standard Playwright actions
await page.fill('[data-testid="email"]', 'user@example.com');
await page.fill('[data-testid="address"]', '123 Main St');
// π AI Analysis - Understands user context
await analyzeUserJourney(page, {
stage: 'checkout-completion',
userIntent: 'complete purchase securely',
userContext: {
persona: 'first-time-buyer',
device: 'mobile',
urgency: 'high'
},
criticalElements: ['payment-form', 'security-badges', 'total-price']
});
await page.click('[data-testid="place-order"]');
});
// cypress/e2e/dashboard.cy.js
import 'jpglens/cypress';
describe('Dashboard Analytics', () => {
it('user analyzes business metrics', () => {
cy.visit('/dashboard');
cy.get('[data-cy="date-filter"]').select('last-30-days');
// π AI Analysis with Cypress
cy.analyzeUserExperience({
journey: 'data-analysis-workflow',
userType: 'business-analyst',
expectation: 'quickly understand key metrics',
context: 'daily business review preparation'
});
});
});
// Button.stories.js
import { analyzeComponentStates } from 'jpglens/storybook';
export const InteractiveStates = {
args: { variant: 'primary' },
play: async ({ canvasElement }) => {
const canvas = within(canvasElement);
const button = canvas.getByRole('button');
// Test different states
await userEvent.hover(button);
await userEvent.focus(button);
// π AI Analysis of component states
await analyzeComponentStates(canvas, {
component: 'Primary Button',
states: ['default', 'hover', 'focus', 'active'],
context: 'critical call-to-action in checkout flow',
designSystem: 'company-design-system'
});
}
};
Transform AI agents into UI testing experts with jpglens MCP integration. Give your AI agents the power to "see" and analyze user interfaces through standardized Model Context Protocol.
Complete v6 toolset for comprehensive UI analysis
Enable agents to understand UI context and user experience
Stdio + SSE bridge support for any architecture
100% test coverage, Docker ready, enterprise validated
jpglens is open source and thrives on community contributions. Help us build the future of AI-powered testing.
Give us a β if jpglens helps your testing workflow
github.com/tahabahrami/jpglens βInstall jpglens from the npm registry
npmjs.com/package/jpglens βFound a bug or have a feature request?
github.com/tahabahrami/jpglens/issues βHelp us improve jpglens for everyone
Contributing Guide β