Modern QA2026Applitools Eyes — tiles
Log inJoin
10 / 74 · 10 Visual & Accessibility Testing · Commercial Visual Regression Tools← prev⊞ allnext →☰ Read as one page

2.3Applitools Eyes

Applitools built its reputation on a proprietary comparison engine ("Visual AI"), and that engine still powers its diffing. But as of July 2026, the company -- like the rest of the commercial wave (mabl, testRigor, KaneAI by LambdaTest, Testim by Tricentis, Functionize) -- positions itself around "agentic execution": AI agents driving real browsers scriptlessly, with visual validation as one capability inside a broader autonomous testing platform. For this section, what matters is that visual layer: it remains the most sophisticated intelligent comparison available and can test across multiple browsers and devices simultaneously from a single test run.

// tests/visual/applitools-checkout.spec.ts
import { test } from '@playwright/test';
import {
    Eyes, Target, BatchInfo, Configuration,
    BrowserType, DeviceName, ScreenOrientation
} from '@applitools/eyes-playwright';

test.describe('Checkout Flow Visual Tests', () => {
    let eyes: Eyes;

    test.beforeEach(async () => {
        eyes = new Eyes();
        const config = new Configuration();
        config.setBatch(new BatchInfo('Checkout Flow'));

        // Test across multiple browsers and devices simultaneously
        config.addBrowser(1200, 800, BrowserType.CHROME);
        config.addBrowser(1200, 800, BrowserType.FIREFOX);
        config.addBrowser(1200, 800, BrowserType.SAFARI);
        config.addDeviceEmulation(DeviceName.iPhone_15, ScreenOrientation.PORTRAIT);
        config.addDeviceEmulation(DeviceName.Pixel_7, ScreenOrientation.PORTRAIT);

        eyes.setConfiguration(config);
    });

    test('cart page visual check', async ({ page }) => {
        await eyes.open(page, 'E-Commerce', 'Cart Page');
        await page.goto('/cart');

        // Full page check with layout matching (ignores text content changes)
        await eyes.check('Cart with items', Target.window()
            .fully()
            .layout()  // Match layout, not exact content
            .ignoreDisplacements()  // Ignore minor position shifts
        );

        // Specific region check with strict matching
        await eyes.check('Price total', Target.region('#order-summary')
            .strict()  // Exact match for financial data
        );

        await eyes.close();
    });

    test.afterEach(async () => {
        await eyes.abort();
    });
});

Applitools Match Levels

Match Level What It Compares Use Case
Strict Pixel-level, AI-filtered Financial data, legal text, exact content
Layout Element positions, sizes, relationships Pages with dynamic content (user names, dates)
Content Text content and structure Pages where styling may vary but content matters
Ignore colors Layout + content, ignoring color changes Theming changes, dark mode testing