
Security News
GPT-6 Astra Attempts Supply Chain Attacks Against Open Source Maintainers in Testing
GPT-6 Astra hits 100% on ExploitBench and finds zero-days autonomously, while independent tests reveal scope violations and monitoring gaps.
@dexilion/lastest
Advanced tools
AI-powered automated visual testing CLI that compares live vs dev environments
AI-powered automated visual testing CLI that compares live vs dev environments mostly for vibe-coders.
![]()
![]()
╔═══════════════════════════════════════════════════════════════════════════╗
║ /\_/\ █████████████████████████████████████████████████████╗ ║
║ ( o.o ) ╚════════════════════════██╔═════════════════════════╝ ║
║ > ^ < |\_/| ██╗ █████╗ ███████╗ ██║ ███████╗███████╗████████╗ ║
║ /| |\ ( o.o ) ██║ ██╔══██╗██╔════╝ ██║ ██╔════╝██╔════╝╚══██╔══╝ ║
║ (_| |_) > ^ < ██║ ███████║███████╗ ██║ █████╗ ███████╗ ██║ ║
║ | | / \ ██║ ██╔══██║╚════██║ ██║ ██╔══╝ ╚════██║ ██║ ║
║ |_| /_______\ ███████╗██║ ██║███████║ ██║ ███████╗███████║ ██║ ║
║ ╚══════╝╚═╝ ╚═╝╚══════╝ ╚═╝ ╚══════╝╚══════╝ ╚═╝ ║
║ ║
║ Automated Visual Testing ║
║ made by Dexilion ║
║ dexilion.com ║
║ v0.3.1 ║
╚═══════════════════════════════════════════════════════════════════════════╝
Automatically scans your codebase, generates Playwright tests using AI, and runs visual regression tests comparing your live and development environments. Get comprehensive reports with side-by-side screenshots and visual diffs. Perfect for vibe-coding.

.lastestrc.jsonChoose based on your preferred test generation mode:
For AI Mode (one of the following):
For Template/Recording Mode: No AI subscription needed!
npx @dexilion/lastest init
That's it! The CLI will guide you through:
npm install -g @dexilion/lastest
npm install --save-dev @dexilion/lastest
npx @dexilion/lastest init
Run this to create your configuration and generate tests:
lastest init
This will:
.lastestrc.json (config) and .lastest-tests.json (cached tests)Once configured and tests are generated, simply run:
lastest
This will:
To update your configuration or regenerate tests with AI:
lastest init
When you have an existing config, it will ask if you want to update it. This regenerates tests from scratch.
lastest init \
--live https://example.com \
--dev http://localhost:3000 \
--ai claude-subscription \
--scan ./src
The .lastestrc.json file is automatically created during init:
{
"aiProvider": "claude-subscription",
"liveUrl": "https://example.com",
"devUrl": "http://localhost:3000",
"scanPath": "./src",
"outputDir": "lastest-results",
"viewport": {
"width": 1920,
"height": 1080
},
"diffThreshold": 1,
"parallel": true,
"maxConcurrency": 5
}
Or with GitHub Copilot:
{
"aiProvider": "copilot-subscription",
"liveUrl": "https://example.com",
"devUrl": "http://localhost:3000"
}
Then run:
lastest init
lasTest offers 4 test generation modes to fit your workflow:
.lastest-tests.json for instant re-runsBest for: Most use cases, generates smart tests with interactions in seconds
Best for: Basic screenshot comparison, no AI costs, fastest generation
Best for: Critical routes requiring bulletproof tests, eliminates selector guessing
Best for: Complex workflows, full control, no AI hallucination
| Feature | AI | Template | MCP | Recording |
|---|---|---|---|---|
| Speed | ⚡⚡ Fast | ⚡⚡⚡ Fastest | ⚡ Slow | 🎯 Manual |
| Cost | 💰 AI tokens | ✅ Free | 💰💰 AI tokens (2x) | ✅ Free |
| Setup | Medium | Easy | Complex | Easy |
| Reliability | Medium | Low | High | Highest |
| Control | Low | N/A | Low | Full |
| Interactions | Yes | No | Yes | Yes |
lasTest supports two AI options - choose based on what you already have:
| Option | Cost | Setup | Best For |
|---|---|---|---|
| Claude Subscription | Included with Pro/Max ($20-$200/mo) | CLI authentication | Existing Claude Pro/Max users |
| GitHub Copilot | Included with subscription ($10-$19/mo) | CLI authentication | Existing Copilot users |
# One-time setup
npm install -g @anthropic-ai/claude-code
claude login
# Then use lasTest
lastest init --ai claude-subscription
# One-time setup (requires Node.js 22+)
npm install -g @github/copilot
# Authenticate (choose one):
# Option 1: Interactive login
copilot
# Then use /login command
# Option 2: Use GitHub token
export GITHUB_TOKEN=your_token
# Then use lasTest
lastest init --ai copilot-subscription
After running, you'll get:
lastest-results/
├── report.html # Interactive HTML report with tabbed view
├── summary.md # Markdown summary
├── screenshots/
│ ├── live/ # Live environment screenshots
│ └── dev/ # Dev environment screenshots
├── diffs/ # Visual difference images
├── tests/ # Generated test files
├── playwright-report/ # Playwright-compatible test report
│ ├── index.html # Detailed test execution report
│ └── report.json # Test results data
└── data.json # Raw test data
The HTML report includes a tabbed interface with three views:
| Option | Type | Default | Description |
|---|---|---|---|
testGenerationMode | 'ai' | 'template' | 'mcp' | 'record' | 'ai' | Test generation mode |
aiProvider | 'claude-subscription' | 'copilot-subscription' | 'claude-subscription' | AI provider (for ai/mcp modes) |
useAIRouteDetection | boolean | false | Use AI to detect routes (slower, more accurate) |
customTestInstructions | string | - | Custom AI instructions (e.g., "Click buttons, fill forms") |
recordingStartUrl | string | - | Starting URL for recording mode |
screenshotHotkey | string | 'Control+Shift+KeyS' | Manual screenshot hotkey (recording mode) |
liveUrl | string | - | Live environment URL |
devUrl | string | - | Development environment URL |
scanPath | string | '.' | Path to scan for routes |
outputDir | string | 'lastest-results' | Output directory for results |
viewport | object | {width: 1920, height: 1080} | Browser viewport (legacy single) |
viewports | array | [{Desktop: 1920x1080}] | Multiple viewports to test |
diffThreshold | number | 1 | Pixel difference threshold (0-100%) |
parallel | boolean | true | Run tests in parallel |
maxConcurrency | number | 5 | Max parallel test executions |
lastest automatically detects and supports:
# One-time global setup
npm install -g @anthropic-ai/claude-code
claude login
# Use in any project
lastest init --ai claude-subscription
# One-time global setup (requires Node.js 22+)
npm install -g @github/copilot
# Authenticate with /login or GITHUB_TOKEN
copilot
# Then enter: /login
# Use in any project
lastest init --ai copilot-subscription
Record interactions visually instead of writing code:
# Start recording session
lastest init
# Select "Recording" mode
# Choose starting URL
# Browser opens - interact naturally
# Press Ctrl+Shift+S to take manual screenshots
# Press Ctrl+R or close browser to finish
# Test automatically generated and executed
Recording Controls:
What's Captured:
Test multiple screen sizes in a single run:
{
"viewports": [
{ "name": "Desktop", "slug": "desktop", "width": 1920, "height": 1080 },
{ "name": "Tablet", "slug": "tablet", "width": 768, "height": 1024 },
{ "name": "Mobile", "slug": "mobile", "width": 375, "height": 667 }
]
}
Each viewport generates separate screenshots: route-desktop.png, route-tablet.png, route-mobile.png
For maximum test reliability with real-time validation:
# Install Claude CLI (if not already installed)
npm install -g @anthropic-ai/claude-code
claude login
# Install Playwright MCP server
claude mcp add @playwright/mcp@latest
# Run lastest with MCP mode
lastest init
# Select "MCP" mode
# MCP validates selectors against real pages
# Discovers additional interactions
# AI refines tests based on validation
What MCP Mode Does:
Best for: Critical user flows, checkout processes, authentication
Add to your GitHub Actions workflow:
name: Visual Tests
on: [push, pull_request]
jobs:
visual-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install dependencies
run: npm install
- name: Run visual tests
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
npx @dexilion/lastest init \
--live https://example.com \
--dev http://localhost:3000 \
--ai claude
- name: Upload results
uses: actions/upload-artifact@v4
with:
name: visual-test-results
path: lastest-results/
import { Scanner, TestGenerator, TestRunner, ReportGenerator } from '@dexilion/lastest';
const config = {
aiProvider: 'claude',
claudeApiKey: process.env.ANTHROPIC_API_KEY,
liveUrl: 'https://example.com',
devUrl: 'http://localhost:3000',
scanPath: '.',
outputDir: 'lastest-results',
};
const scanner = new Scanner(config.scanPath);
const routes = await scanner.scan();
const generator = new TestGenerator(config);
const tests = await generator.generateTests(routes);
const runner = new TestRunner(config);
const results = await runner.runTests(tests);
const reporter = new ReportGenerator(config);
await reporter.generate(results);
# Set Claude API key
export ANTHROPIC_API_KEY=your-key
# Or add to .lastestrc.json
{
"claudeApiKey": "your-key"
}
diffThreshold in configIssue: Intermittent errors when using copilot-subscription provider:
/bin/sh: 1: typescript: not found
Root Cause: The GitHub Copilot CLI attempts to execute a typescript command internally (likely for validation or processing), but expects it to be globally available. This happens inconsistently - sometimes Copilot validates/processes TypeScript, sometimes it doesn't.
Workarounds:
Install TypeScript globally (recommended):
npm install -g typescript
Add local TypeScript to PATH:
export PATH="$PATH:./node_modules/.bin"
Switch to Claude provider:
lastest init --ai claude-subscription
Status: This is a bug in the @github/copilot CLI package, not lasTest. The CLI should not require TypeScript to be globally installed when only generating code responses.
MIT © lastest contributors
Made with ❤️ for the open-source community
FAQs
AI-powered automated visual testing CLI that compares live vs dev environments
We found that @dexilion/lastest demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.

Security News
GPT-6 Astra hits 100% on ExploitBench and finds zero-days autonomously, while independent tests reveal scope violations and monitoring gaps.

Product
Socket can now send alerts and supply chain attack notifications to Microsoft Teams, with filters that route the right updates to each channel.

Security News
pnpm 12 rewrites the package manager in Rust, cutting install times by up to 90% while preserving pnpm 11 workflows and lockfiles.