Recommended Free Tools
Test UPI payment pages with separate, controlled fixtures for successful, pending, and failed states. First assert the status and its explanation in the page, then compare a screenshot in a consistent browser environment. A visual match shows what the interface rendered; it does not prove whether a bank account was credited.
Why success, pending, and failure need separate tests
Payment status is more than a color or icon. A pending transaction is not the same outcome as a successful one, and a technical decline is not simply a differently styled success message. NPCI defines technical declines as declines caused by technical reasons such as system unavailability or network issues; it also describes deemed-approved cases where online confirmation of beneficiary-bank credit is unavailable. Those distinctions make the displayed explanation and next step part of the behavior worth testing, not just decoration. See NPCI’s UPI ecosystem terminology.
| # | Preview | Product | Price | |
|---|---|---|---|---|
| 1 |
|
SumUp Terminal SumUp Touch POS Terminal – Accepts Contactless, Chip & PIN, Apple & Google Pay +... | $249.00 | Buy on Amazon |
NPCI’s UPI Help examples depict approved, pending, and failed transactions, including a pending sequence labeled “Payment Initiated,” “Payment Processing,” and “Confirmation Awaited.” These are useful interface examples, not a required wording or layout for every merchant or payment service provider.
NPCI’s FAQ explains that a transaction may remain pending while beneficiary-bank processing is delayed and gives a 48-hour arrival expectation in that FAQ entry. That is customer guidance, not a timeless UI rule: check the live FAQ and the relevant bank or app guidance before putting a time estimate in product copy. Test the page’s intended pending message without treating a screenshot as a resolution of a real payment dispute.
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstall#1 Best Overall
- Effortless payments and printing: Accept card payments and print payment receipts on the spot with the built-in 40 mm thermal printer.
- Faster sales processing: Use pre-set menus and catalogs to make transactions faster and smoother for you and your customers.
- Reliable and portable: Featuring a 6.5" HD touchscreen made from Corning Gorilla Glass and a powerful battery that lasts all day.
- Seamless connectivity: Stay connected with free mobile data and WiFi, ensuring uninterrupted transactions.
- Real-time payment tracking: Monitor payments and issue refunds right from your device, so you're always in control.
Build deterministic, synthetic status fixtures
Drive the page from test data or a controlled API fixture so every run can render the same state. Do not initiate real payments for visual tests, and do not put real UPI IDs, phone numbers, account details, transaction references, or payment screenshots in test artifacts.
| Fixture | What the page should communicate | What to check |
|---|---|---|
| Approved / successful | A clear confirmation that matches the product’s verified success state. | Status label, amount, payee, timestamp, reference presentation, and any receipt or follow-up action shown by the design. |
| Pending / processing | The payment is not yet presented as completed; explain the current state and any appropriate next step. | Pending label and explanation, progress stages or affordance, and help content. Do not let a color or spinner stand in for readable status text. |
| Failed | A clear failure message and a useful next step, without implying that every failure has the same cause. | Failure label, explanation, support or retry guidance, and the fields shown for this outcome. |
| Product-specific timeout or reversal | The product’s own distinct wording and next action, if it supports this presentation. | Keep it distinct from pending or final failure wherever the underlying product state requires that distinction. |
Use synthetic but realistic values to test edge cases: long payee names, long references, supported localized amount formats, and narrow mobile widths. Freeze timestamps and generated identifiers in fixtures. If their exact values are not under test, mask only those values—not the field labels or surrounding status guidance.
Assert meaning before taking a screenshot
A screenshot regression can catch changed layout, color, hierarchy, wrapping, or missing visual elements. It cannot establish that the backend’s payment status is correct. Assert the visible status and user-facing explanation semantically first, then capture the page or status component.
Here is a Playwright Test example in TypeScript. It assumes the application exposes a test-only fixture route that renders a supplied synthetic state; adapt that route and accessible names to the application. The selectors use roles and accessible names so the assertions test user-visible content rather than a particular implementation detail.
Free tools Windows power users keep installed
One-click scans. No signup required.
import { test, expect } from '@playwright/test';
test('pending UPI status is clear and visually stable', async ({ page }) => {
await page.goto('/__test__/payment-status?fixture=pending-synthetic');
await expect(page.getByRole('heading', { name: 'Payment pending' })).toBeVisible();
await expect(page.getByText('We are waiting for confirmation')).toBeVisible();
await expect(page.getByText('₹1,250.00')).toBeVisible();
await expect(page.getByTestId('payment-status-card')).toHaveScreenshot(
'upi-pending-card.png',
{ animations: 'disabled' }
);
});
The strings and test ID above are illustrative application choices, not prescribed UPI wording. Create equivalent tests for approved and failed fixtures; assert each state’s actual intended label, explanation, and next-step content before its visual assertion. If your page uses a progress sequence, assert the visible step text as well as the overall pending state.
Playwright’s visual comparisons documentation covers both page-level toHaveScreenshot() assertions and locator-level screenshots. On an initial run, Playwright creates reference images; later runs compare captures with those references. Its screenshot assertion waits for two consecutive screenshots to match before comparison, which helps avoid capturing a still-changing page. This wait does not replace application-specific checks that the desired fixture has loaded.
Control the capture environment and comparison scope
Keep browser rendering consistent
Fix the browser project and version, operating system where practical, viewport, device scale factor, locale, timezone, and color scheme. Load the intended fonts and critical UI before capture, and disable or freeze animation when motion is not what the test covers. Maintain separate baselines when you deliberately test different browsers, operating systems, or viewport sizes.
Playwright warns: “Browser rendering can vary between the host OS, version, settings, hardware, power source (battery vs. power adapter), headless mode, and other factors.” For details, see its “Visual comparisons” guide. The practical implication is to compare like with like; a baseline produced in a different rendering environment can show noise unrelated to a product change.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Choose the surface that answers the test question
A locator screenshot of the status card isolates the transaction message from site chrome. A full-page screenshot can reveal clipping, shifted layout, or responsive problems elsewhere. Use both when both component presentation and page composition matter; create distinct expected images for deliberately covered responsive sizes.
Use masks and thresholds deliberately
Prefer deterministic fixtures for dates, references, and other generated data. If a value must remain dynamic, mask only that unstable value while leaving the label and surrounding guidance visible. Avoid masking the status itself, progress affordance, amount, or other behavior under test.
Playwright supports configurable pixel-difference and color thresholds. There is no universally correct tolerance: a broad allowance can conceal meaningful changes, while zero tolerance can make harmless rendering noise costly. Start conservatively in a stable environment, inspect actual diffs, and set explicit tolerances only when they fit the product’s visual requirements.
Review failures and update baselines safely
- Run the test against the same browser project and environment used to create the baseline.
- When it fails, inspect the expected image, actual image, and diff. Confirm the intended fixture and semantic assertions passed before interpreting the pixel difference.
- Decide whether the difference is an unintended regression, unstable test content, or an intentional design change. Fix the fixture or application where appropriate; do not mask a meaningful field just to get a passing test.
- Update the reference image only after verifying that the changed state and design are intended. An updated golden image is a changed expectation, not a pass by itself.
Troubleshoot common screenshot-test failures
- Snapshots fail intermittently: check for changing timestamps, generated IDs, animation, late fonts, or content that has not settled. Freeze fixture data, wait for the relevant UI, and keep the render environment consistent.
- The screenshot passes but the wrong status appears: add or correct semantic assertions before the screenshot. Pixel similarity alone cannot verify the intended payment state.
- Diffs appear after a machine or browser change: rendering can vary across host systems and browser conditions. Run against the baseline environment or intentionally establish and review a separate baseline for the new one.
- A tolerance hides a real status change: narrow the threshold or remove it, and ensure status text and key guidance are asserted semantically rather than masked.
- A mobile capture clips long content: test supported narrow viewports with long synthetic payee names and references; inspect wrapping and visibility of the primary status instead of masking the overflowing area.
- A pending test looks like success: inspect the fixture-to-UI mapping and assert the pending label and explanation explicitly. A progress animation or color is not enough to communicate the outcome.
Or skip the browser setup
If the goal is to capture a rendered status page rather than maintain a local browser-test harness, ScreenshotNeo is a website screenshot API and MCP server. A single request can return an image or PDF; the example below saves a WebP capture. Get an API key and see the ScreenshotNeo API documentation.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
For UPI status testing, provide a test page URL that renders a synthetic fixture—not a real payment receipt or private transaction page. ScreenshotNeo accepts consent banners as a visitor and removes 60+ known consent platforms, newsletter popups, and chat widgets before capture; each step can be turned off. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and each response says which outcome occurred. Its MCP server offers take_screenshot, get_page_info, and capture_pdf tools for AI agents. The free plan includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots. A service screenshot is still evidence of rendered pixels, not evidence of a real bank transaction’s final status. Sign up for 1,000 free screenshots a month, with no card.
Final validation checklist
- Provide distinct, deterministic synthetic fixtures for successful, pending, failed, and any product-specific timeout or reversal presentation.
- Assert the status label, explanation, and relevant fields semantically before comparing pixels.
- Cover supported desktop and mobile viewports, with stable browser and rendering settings.
- Mask only unstable content that is outside the behavior under test, and set visual thresholds based on inspected diffs.
- Review baseline changes against the intended fixture and design before accepting them.
- Validate transaction state through the authoritative application or payment-system path separately; never infer bank-account outcome from a screenshot.
For integrations, scope matters: Google Pay’s India web integration documentation applies to Android devices with Chrome and discusses payment-status checks and unique transaction IDs. That integration-specific context reinforces why UI rendering and payment completion are different checks.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

