From e816a37753ab16c41950f216643313ba9c6799b1 Mon Sep 17 00:00:00 2001 From: Dmitrijs Munda Date: Thu, 21 May 2026 09:27:35 +0300 Subject: [PATCH 1/2] feat(devices): add iPhone 16 and iPhone 17 device families Add portrait and landscape descriptors for the iPhone 16 and iPhone 17 generations (10 devices, 20 entries): iPhone 16 393x852 scale 3 iPhone 16 Plus 430x932 scale 3 iPhone 16 Pro 402x874 scale 3 iPhone 16 Pro Max 440x956 scale 3 iPhone 16e 390x844 scale 3 iPhone 17 402x874 scale 3 iPhone Air 420x912 scale 3 iPhone 17 Pro 402x874 scale 3 iPhone 17 Pro Max 440x956 scale 3 iPhone 17e 390x844 scale 3 Screen and scale values are taken from ios-resolution.com. Browser-chrome subtraction follows the existing iPhone 15 entries in this file (193 px portrait / 118 + 50 px landscape). UA string mirrors the existing iPhone 15 entries: Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.4 Mobile/15E148 Safari/604.1 "iPhone OS 18_7" reflects Apple's UA OS-version freeze introduced in iOS 26: https://www.kochava.com/blog/ios-26-apple-freezes-os-version/ The Version/26.4 segment will be auto-normalised by doclint to whatever WebKit version Playwright currently bundles. --- .../src/server/deviceDescriptorsSource.json | 300 ++++++++++++++++++ 1 file changed, 300 insertions(+) diff --git a/packages/playwright-core/src/server/deviceDescriptorsSource.json b/packages/playwright-core/src/server/deviceDescriptorsSource.json index e706ee8d10c01..73b7eaefafda4 100644 --- a/packages/playwright-core/src/server/deviceDescriptorsSource.json +++ b/packages/playwright-core/src/server/deviceDescriptorsSource.json @@ -1185,6 +1185,306 @@ "hasTouch": true, "defaultBrowserType": "webkit" }, + "iPhone 16": { + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.4 Mobile/15E148 Safari/604.1", + "screen": { + "width": 393, + "height": 852 + }, + "viewport": { + "width": 393, + "height": 659 + }, + "deviceScaleFactor": 3, + "isMobile": true, + "hasTouch": true, + "defaultBrowserType": "webkit" + }, + "iPhone 16 landscape": { + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.4 Mobile/15E148 Safari/604.1", + "screen": { + "width": 393, + "height": 852 + }, + "viewport": { + "width": 734, + "height": 343 + }, + "deviceScaleFactor": 3, + "isMobile": true, + "hasTouch": true, + "defaultBrowserType": "webkit" + }, + "iPhone 16 Plus": { + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.4 Mobile/15E148 Safari/604.1", + "screen": { + "width": 430, + "height": 932 + }, + "viewport": { + "width": 430, + "height": 739 + }, + "deviceScaleFactor": 3, + "isMobile": true, + "hasTouch": true, + "defaultBrowserType": "webkit" + }, + "iPhone 16 Plus landscape": { + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.4 Mobile/15E148 Safari/604.1", + "screen": { + "width": 430, + "height": 932 + }, + "viewport": { + "width": 814, + "height": 380 + }, + "deviceScaleFactor": 3, + "isMobile": true, + "hasTouch": true, + "defaultBrowserType": "webkit" + }, + "iPhone 16 Pro": { + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.4 Mobile/15E148 Safari/604.1", + "screen": { + "width": 402, + "height": 874 + }, + "viewport": { + "width": 402, + "height": 681 + }, + "deviceScaleFactor": 3, + "isMobile": true, + "hasTouch": true, + "defaultBrowserType": "webkit" + }, + "iPhone 16 Pro landscape": { + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.4 Mobile/15E148 Safari/604.1", + "screen": { + "width": 402, + "height": 874 + }, + "viewport": { + "width": 756, + "height": 352 + }, + "deviceScaleFactor": 3, + "isMobile": true, + "hasTouch": true, + "defaultBrowserType": "webkit" + }, + "iPhone 16 Pro Max": { + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.4 Mobile/15E148 Safari/604.1", + "screen": { + "width": 440, + "height": 956 + }, + "viewport": { + "width": 440, + "height": 763 + }, + "deviceScaleFactor": 3, + "isMobile": true, + "hasTouch": true, + "defaultBrowserType": "webkit" + }, + "iPhone 16 Pro Max landscape": { + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.4 Mobile/15E148 Safari/604.1", + "screen": { + "width": 440, + "height": 956 + }, + "viewport": { + "width": 838, + "height": 390 + }, + "deviceScaleFactor": 3, + "isMobile": true, + "hasTouch": true, + "defaultBrowserType": "webkit" + }, + "iPhone 16e": { + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.4 Mobile/15E148 Safari/604.1", + "screen": { + "width": 390, + "height": 844 + }, + "viewport": { + "width": 390, + "height": 651 + }, + "deviceScaleFactor": 3, + "isMobile": true, + "hasTouch": true, + "defaultBrowserType": "webkit" + }, + "iPhone 16e landscape": { + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.4 Mobile/15E148 Safari/604.1", + "screen": { + "width": 390, + "height": 844 + }, + "viewport": { + "width": 726, + "height": 340 + }, + "deviceScaleFactor": 3, + "isMobile": true, + "hasTouch": true, + "defaultBrowserType": "webkit" + }, + "iPhone 17": { + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.4 Mobile/15E148 Safari/604.1", + "screen": { + "width": 402, + "height": 874 + }, + "viewport": { + "width": 402, + "height": 681 + }, + "deviceScaleFactor": 3, + "isMobile": true, + "hasTouch": true, + "defaultBrowserType": "webkit" + }, + "iPhone 17 landscape": { + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.4 Mobile/15E148 Safari/604.1", + "screen": { + "width": 402, + "height": 874 + }, + "viewport": { + "width": 756, + "height": 352 + }, + "deviceScaleFactor": 3, + "isMobile": true, + "hasTouch": true, + "defaultBrowserType": "webkit" + }, + "iPhone Air": { + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.4 Mobile/15E148 Safari/604.1", + "screen": { + "width": 420, + "height": 912 + }, + "viewport": { + "width": 420, + "height": 719 + }, + "deviceScaleFactor": 3, + "isMobile": true, + "hasTouch": true, + "defaultBrowserType": "webkit" + }, + "iPhone Air landscape": { + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.4 Mobile/15E148 Safari/604.1", + "screen": { + "width": 420, + "height": 912 + }, + "viewport": { + "width": 794, + "height": 370 + }, + "deviceScaleFactor": 3, + "isMobile": true, + "hasTouch": true, + "defaultBrowserType": "webkit" + }, + "iPhone 17 Pro": { + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.4 Mobile/15E148 Safari/604.1", + "screen": { + "width": 402, + "height": 874 + }, + "viewport": { + "width": 402, + "height": 681 + }, + "deviceScaleFactor": 3, + "isMobile": true, + "hasTouch": true, + "defaultBrowserType": "webkit" + }, + "iPhone 17 Pro landscape": { + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.4 Mobile/15E148 Safari/604.1", + "screen": { + "width": 402, + "height": 874 + }, + "viewport": { + "width": 756, + "height": 352 + }, + "deviceScaleFactor": 3, + "isMobile": true, + "hasTouch": true, + "defaultBrowserType": "webkit" + }, + "iPhone 17 Pro Max": { + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.4 Mobile/15E148 Safari/604.1", + "screen": { + "width": 440, + "height": 956 + }, + "viewport": { + "width": 440, + "height": 763 + }, + "deviceScaleFactor": 3, + "isMobile": true, + "hasTouch": true, + "defaultBrowserType": "webkit" + }, + "iPhone 17 Pro Max landscape": { + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.4 Mobile/15E148 Safari/604.1", + "screen": { + "width": 440, + "height": 956 + }, + "viewport": { + "width": 838, + "height": 390 + }, + "deviceScaleFactor": 3, + "isMobile": true, + "hasTouch": true, + "defaultBrowserType": "webkit" + }, + "iPhone 17e": { + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.4 Mobile/15E148 Safari/604.1", + "screen": { + "width": 390, + "height": 844 + }, + "viewport": { + "width": 390, + "height": 651 + }, + "deviceScaleFactor": 3, + "isMobile": true, + "hasTouch": true, + "defaultBrowserType": "webkit" + }, + "iPhone 17e landscape": { + "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.4 Mobile/15E148 Safari/604.1", + "screen": { + "width": 390, + "height": 844 + }, + "viewport": { + "width": 726, + "height": 340 + }, + "deviceScaleFactor": 3, + "isMobile": true, + "hasTouch": true, + "defaultBrowserType": "webkit" + }, "Kindle Fire HDX": { "userAgent": "Mozilla/5.0 (Linux; U; en-us; KFAPWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.13 Safari/535.19 Silk-Accelerated=true", "viewport": { From 44addecc271fef099c612876a2ed867f996750e7 Mon Sep 17 00:00:00 2001 From: Dmitry Gozman Date: Fri, 22 May 2026 11:01:46 +0100 Subject: [PATCH 2/2] chore(devices): regenerate types for iPhone 16/17 descriptors --- packages/playwright-client/types/types.d.ts | 20 ++++++++++++++++++++ packages/playwright-core/types/types.d.ts | 20 ++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/packages/playwright-client/types/types.d.ts b/packages/playwright-client/types/types.d.ts index 5136b94b64618..7a032da7ad9a6 100644 --- a/packages/playwright-client/types/types.d.ts +++ b/packages/playwright-client/types/types.d.ts @@ -24796,6 +24796,26 @@ type Devices = { "iPhone 15 Pro landscape": DeviceDescriptor; "iPhone 15 Pro Max": DeviceDescriptor; "iPhone 15 Pro Max landscape": DeviceDescriptor; + "iPhone 16": DeviceDescriptor; + "iPhone 16 landscape": DeviceDescriptor; + "iPhone 16 Plus": DeviceDescriptor; + "iPhone 16 Plus landscape": DeviceDescriptor; + "iPhone 16 Pro": DeviceDescriptor; + "iPhone 16 Pro landscape": DeviceDescriptor; + "iPhone 16 Pro Max": DeviceDescriptor; + "iPhone 16 Pro Max landscape": DeviceDescriptor; + "iPhone 16e": DeviceDescriptor; + "iPhone 16e landscape": DeviceDescriptor; + "iPhone 17": DeviceDescriptor; + "iPhone 17 landscape": DeviceDescriptor; + "iPhone Air": DeviceDescriptor; + "iPhone Air landscape": DeviceDescriptor; + "iPhone 17 Pro": DeviceDescriptor; + "iPhone 17 Pro landscape": DeviceDescriptor; + "iPhone 17 Pro Max": DeviceDescriptor; + "iPhone 17 Pro Max landscape": DeviceDescriptor; + "iPhone 17e": DeviceDescriptor; + "iPhone 17e landscape": DeviceDescriptor; "Kindle Fire HDX": DeviceDescriptor; "Kindle Fire HDX landscape": DeviceDescriptor; "LG Optimus L70": DeviceDescriptor; diff --git a/packages/playwright-core/types/types.d.ts b/packages/playwright-core/types/types.d.ts index 5136b94b64618..7a032da7ad9a6 100644 --- a/packages/playwright-core/types/types.d.ts +++ b/packages/playwright-core/types/types.d.ts @@ -24796,6 +24796,26 @@ type Devices = { "iPhone 15 Pro landscape": DeviceDescriptor; "iPhone 15 Pro Max": DeviceDescriptor; "iPhone 15 Pro Max landscape": DeviceDescriptor; + "iPhone 16": DeviceDescriptor; + "iPhone 16 landscape": DeviceDescriptor; + "iPhone 16 Plus": DeviceDescriptor; + "iPhone 16 Plus landscape": DeviceDescriptor; + "iPhone 16 Pro": DeviceDescriptor; + "iPhone 16 Pro landscape": DeviceDescriptor; + "iPhone 16 Pro Max": DeviceDescriptor; + "iPhone 16 Pro Max landscape": DeviceDescriptor; + "iPhone 16e": DeviceDescriptor; + "iPhone 16e landscape": DeviceDescriptor; + "iPhone 17": DeviceDescriptor; + "iPhone 17 landscape": DeviceDescriptor; + "iPhone Air": DeviceDescriptor; + "iPhone Air landscape": DeviceDescriptor; + "iPhone 17 Pro": DeviceDescriptor; + "iPhone 17 Pro landscape": DeviceDescriptor; + "iPhone 17 Pro Max": DeviceDescriptor; + "iPhone 17 Pro Max landscape": DeviceDescriptor; + "iPhone 17e": DeviceDescriptor; + "iPhone 17e landscape": DeviceDescriptor; "Kindle Fire HDX": DeviceDescriptor; "Kindle Fire HDX landscape": DeviceDescriptor; "LG Optimus L70": DeviceDescriptor;