Use Playwright Test to capture a page with an iPhone device profile, compare it with a saved screenshot, and run the test on a GitHub Actions schedule. This catches visual changes at an emulated iPhone viewport; it does not prove the page behaves identically on a physical iPhone.
What this scheduled check can—and cannot—tell you
A visual snapshot test flags pixel differences between a new capture and a reference image. It is a useful signal to inspect, not a diagnosis: a difference may be an unintended regression or an expected content or design change.
| # | Preview | Product | Price | |
|---|---|---|---|---|
| 1 |
|
Apple iPhone 14, 128GB, Midnight - Unlocked (Renewed) | $300.00 | Buy on Amazon |
| 2 |
|
Apple iPhone 16, 128GB, Pink - Unlocked (Renewed) | $574.99 | Buy on Amazon |
| 3 |
|
Apple iPhone 15, 128GB, Black - Unlocked (Renewed) | $405.00 | Buy on Amazon |
| 4 |
|
Apple iPhone 13, 128GB, Midnight - Unlocked (Renewed) | Unlocked | $262.00 | Buy on Amazon |
| 5 |
|
Apple iPhone 16e, 128GB, Black - Unlocked (Renewed) | $387.73 | Buy on Amazon |
As an Amazon Associate I earn from qualifying purchases.
Playwright’s device registry includes an iPhone 13 preset that configures browser parameters such as viewport, user agent, screen size, and touch behavior. You can override its viewport in the test configuration. These are emulated settings, not a physical iPhone’s complete hardware and software environment. See Playwright device emulation.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Set up a Playwright screenshot test
1. Install Playwright Test and its browser
In a Node.js project, install the test package and Chromium browser:
#1 Best Overall
- This phone is unlocked and compatible with any carrier of choice on GSM and CDMA networks (e.g. AT&T, T-Mobile, Sprint, Verizon, US Cellular, Cricket, Metro, Tracfone, Mint Mobile, etc.).
- Please check with your carrier to verify compatibility.
- The device does not come with headphones or a SIM card. It does include a generic (Mfi certified) charging cable.
- Tested for battery health and guaranteed to have a minimum battery capacity of 80%.
npm init -y
npm install --save-dev @playwright/test
npx playwright install chromium
If the project already has Playwright Test, use its existing dependency and installation process instead. The test below uses Chromium with Playwright’s iPhone profile; it is not Safari running on iOS.
2. Add the test
Create tests/mobile-visual.spec.ts. Replace the example URL with the page you want to monitor.
import { test, expect, devices } from '@playwright/test';
test.use({ ...devices['iPhone 13'] });
test('homepage matches the iPhone viewport reference', async ({ page }) => {
await page.goto('https://example.com', { waitUntil: 'networkidle' });
await expect(page).toHaveScreenshot('homepage-iphone.png');
});
The first run creates the reference screenshot; subsequent runs compare captures against it. Commit the generated reference image to version control so the scheduled runner has the same baseline as the code. Review a changed image before accepting it. Playwright documents the assertion and reference-update process in Visual comparisons.
Free tools Windows power users keep installed
One-click scans. No signup required.
3. Make the capture scope and viewport intentional
The test above compares the page screenshot using the device preset’s viewport. If you want to specify a viewport explicitly, configure it after spreading the preset:
Rank #2
- 6.1" Super Retina XDR OLED, HDR10, Dolby Vision, 1000nits (typ), 2000nits (HBM), 2556x1179px at 460ppi, 3561mAh Battery
- 128GB 8GB RAM, Apple A18 (3nm), Hexa-core (2x4.04 GHz + 4x2.20 GHz), Apple GPU 5-core, 16‑core Neural Engine
- Rear camera: 48MP, f/1.6, wide + 12MP, f/2.2, ultrawide, Front Camera: 12MP, f/1.9, wide, iOS 18, upgradable to iOS 18.5
- 4G LTE: 1/2/3/4/5/7/8/12/13/14/17/18/19/20/25/26/28/29/30/32/34/38/39/40/41/42/48/53/66/71, 5G: n1/2/3/5/7/8/12/14/20/25/26/28/29/30/38/40/41/48/53/66/70/71/75/76/77/78/79 - Dual eSIM
- Unlocked for freedom to choose your carrier. Compatible with both GSM & CDMA networks. The phone is unlocked to work with all GSM Carriers & CDMA Carriers Including AT&T, T-Mobile, Verizon, Sprint., Etc.
test.use({
...devices['iPhone 13'],
viewport: { width: 390, height: 844 },
});
A viewport capture and a full-page capture answer different questions. To include the complete scrollable page, pass the full-page screenshot option:
await expect(page).toHaveScreenshot('homepage-iphone-full.png', {
fullPage: true,
});
Use the viewport-only assertion when the concern is what a visitor sees in the initial screen; use fullPage when below-the-fold layout matters. A full-page image can also be more sensitive to long pages and changing content.
Run the test on a schedule in GitHub Actions
Add .github/workflows/mobile-visual.yml. This example runs daily at 09:00 UTC and also allows a manual run:
name: Mobile visual check
on:
schedule:
- cron: '0 9 * * *'
workflow_dispatch:
permissions:
contents: read
jobs:
screenshot:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- run: npx playwright install --with-deps chromium
- run: npx playwright test
Adjust the cron expression to suit your monitoring needs. GitHub Actions uses POSIX cron in UTC by default, and scheduled workflows run against the latest commit on the default branch. The shortest supported schedule interval is once every five minutes. See GitHub Actions workflow syntax.
Rank #3
- 6.1inch Super Retina XDR display. Aluminum with color-infused glass back. Ring/Silent switch
- Dynamic Island. A magical way to interact with iPhone. A16 Bionic chip with 5-core GPU
- Advanced dual-camera system. 48MP Main | Ultra Wide. Super-high-resolution photos (24MP and 48MP). Next-generation portraits with Focus and Depth Control. 4X optical zoom range
- Emergency SOS via satellite. Crash Detection. Roadside Assistance via satellite
- Up to 26 hours video playback. USB C, Supports USB 2. Face ID
The scheduled workflow and the test’s reference screenshot must be present on the default branch. GitHub says scheduled workflows in public repositories are automatically disabled after 60 days without repository activity; if a public project’s scheduled runs stop, check whether the workflow was disabled. See GitHub workflow events.
Keep screenshot comparisons useful
Keep the rendering environment consistent
Generate and compare screenshots in the same kind of environment. Playwright notes that rendering can vary with the host operating system, browser version, settings, hardware, power source, and headless mode. A local reference generated on one machine may differ from an image captured by a hosted Linux runner even when the site has not meaningfully changed. Prefer generating and reviewing baselines in the CI environment used for scheduled comparisons.
Control content that changes on every run
Timestamps, rotating promotions, animated content, and other dynamic regions can create noisy diffs. Playwright screenshot assertions support a stylesheet that can hide or stabilize known volatile elements:
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows 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 reinstallawait expect(page).toHaveScreenshot('homepage-iphone.png', {
stylePath: 'tests/screenshot.css',
});
For example, create tests/screenshot.css with selectors specific to the page:
Rank #4
- This pre-owned product is not Apple certified, but has been professionally inspected, tested and cleaned by Amazon-qualified suppliers.
- There will be no visible cosmetic imperfections when held at an arm’s length.
- This product is eligible for a replacement or refund within 90 days of receipt if you are not satisfied.
- Product may come in generic Box.
.live-clock,
.rotating-promotion {
visibility: hidden !important;
}
Hiding a region also means changes in that region will not be detected. Do not suppress content whose appearance is part of the check.
Review before updating a baseline
When the assertion fails, inspect the actual image and the diff artifact before changing the reference. If the design change is intended, update the baseline deliberately with Playwright’s snapshot update option, then commit the changed screenshot alongside the relevant code or design change. Updating a reference simply to make a failing run pass can conceal a real regression.
Choose between local snapshots and hosted review
Playwright’s built-in visual assertions keep reference images in the repository and compare them in your test run. Teams wanting hosted baseline management and a visual-review workflow can investigate Percy: its Playwright client documents snapshot capture and a toHaveScreenshot() integration, and BrowserStack describes Percy as maintaining a base build and reporting visual changes for review. These descriptions establish feature relevance, not current pricing or service limits. See Percy Playwright documentation and BrowserStack’s Percy with Playwright guide.
Compare tools on where baselines live, how reviewers inspect diffs, how CI fits the process, whether the capture environment is repeatable, and how dynamic page content is handled. For bugs that may depend on iOS-specific browser behavior, validate on actual hardware or an appropriate real-device testing service.
Best Value
- 6.1" Super Retina XDR OLED, HDR10, 800 nits (HBM), 1200 nits (peak), 2532x1170px at 460ppi, 4005mAh Battery
- 8GB RAM, Apple A18 6-core CPU (2 performance + 4 efficiency cores), Apple GPU 4-core, 16‑core Neural Engine
- Rear camera: 48MP, f/1.6, wide, Front Camera: 12MP, f/1.9, wide, iOS 18.3.1, upgradable to iOS 18.5
- Connectivity: Global 4G LTE, Sub-6 GHz 5G, LTE, Wi-Fi 6, Bluetooth 5.3, NFC, USB-C, Wireless Charging (7.5W). (does not have mmWave 5G or MagSafe or physical SIM card) - Dual eSIM Only
- Unlocked for freedom to choose your carrier. Compatible with both GSM & CDMA networks. The phone is unlocked to work with all GSM Carriers & CDMA Carriers Including AT&T, T-Mobile, Verizon, Straight Talk., Etc.
Troubleshooting scheduled screenshots
- The first run fails because no expected screenshot exists: run the test once with Playwright’s snapshot update option, inspect the generated reference, and commit it. Future runs need that reference in the checked-out branch.
- The test fails on every scheduled run despite no apparent design change: compare the runner and baseline environments, then check for dynamic content, browser-version drift, or differences between local and CI rendering.
- The scheduled workflow does not run: verify the workflow file is on the default branch and that the cron expression is valid POSIX syntax in UTC. For a public repository, also check whether 60 days without repository activity caused automatic disabling.
- The capture misses a below-the-fold problem: the default assertion is a viewport screenshot. Set
fullPage: trueif the complete page is in scope. - The screenshot differs from a real iPhone: the device preset emulates browser parameters; it is not a guarantee of physical iOS behavior. Reproduce the issue on an actual device when the distinction matters.
Or skip the browser setup
ScreenshotNeo takes website screenshots through a single API request. Its clean-shot flow accepts cookie or consent banners like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each step can be turned off. Only clean shots are billed: bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, and responses identify the page verdict and billing status in headers. It also provides an MCP server with screenshot, page-info, and PDF tools for AI agents.
For a simple capture, create an API key and use this cURL call. See the ScreenshotNeo API documentation for request options and response details.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com -o shot.webp
ScreenshotNeo returns PNG, JPEG, or WebP screenshots or PDFs; its other options include viewport and device presets, full-page capture, selector capture, custom CSS and JavaScript, waits, and caching. The Free plan includes 1,000 shots per month without a card; paid plans start at $5 for 3,000 shots. Details are at ScreenshotNeo. Sign up for 1,000 free screenshots a month, with no card required.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Frequently Asked Questions
How often can a GitHub Actions screenshot check run?
GitHub Actions supports scheduled workflows as often as once every five minutes; cron times are interpreted in UTC by default.
Does an iPhone preset test Safari on a real iPhone?
No. It applies emulated device and browser parameters. Use a physical iPhone or a real-device testing service when the behavior may be specific to iOS.
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.




