Tests mobiles avec Playwright

Tests mobiles Playwright, incluant principalement des fonctionnalités telles que la simulation d'appareils mobiles, la géolocalisation et le contrôle des autorisations.

En plus de simuler des navigateurs de bureau, Playwright prend également en chargeles tests sur appareils mobiles, notamment :

  • Simulation de différents modèles de téléphones (taille d'écran, résolution, UA, etc.)
  • Simulation d'événements tactiles (tap, swipe, appui long)
  • Simulation de la géolocalisation (GPS)
  • Simulation des autorisations (caméra, localisation, notifications)

Cela nous permet de tester sur un PC avec des effets proches de ceux d’un vrai téléphone.


Simulation d’appareils

Playwright fournit quelques configurations d’appareils courantes (basées sur les descripteurs d’appareils deChrome DevTools), et peut êtredevicesinvoqué.

Exemple

const { chromium, devices } = require('playwright');

(async () => {
  const iPhone = devices['iPhone 12']; // Sélectionner l’appareil

  const browser = await chromium.launch();
  const context = await browser.newContext({
    ...iPhone  // Appliquer la configuration de l’appareil
  });

  const page = await context.newPage();
  await page.goto('https://www.example.com');

  await page.screenshot({ path: 'mobile.png' });
  await browser.close();
})();

Ce qui peut être simulé :

  • Résolution de l’écran(width、height、deviceScaleFactor)
  • User-Agent(UA mobile simulé)
  • Prise en charge des événements tactiles
  • Basculement paysage/portrait

Simulation des opérations tactiles

Playwright activeles événements tactiles。

Opérations courantes :

1. Appui

await page.tap('button#submit');

2. Balayage/Glisser

await page.touchscreen.tap(200, 300); // 点击指定坐标
await page.touchscreen.swipe(200, 300, 200, 800); // 自定义封装,模拟滑动

3. Appui long

await page.touchscreen.down(200, 300);
await page.waitForTimeout(1000); // 按住 1 秒
await page.touchscreen.up();

Simulation de la géolocalisation

Peut simuler lepositionnement GPS du téléphone。

Exemple

const context = await browser.newContext({
  geolocation: { longitude: 116.4074, latitude: 39.9042 }, // Pékin
  permissions: ['geolocation']
});

const page = await context.newPage();
await page.goto('https://www.google.com/maps');

Simulation des autorisations

Playwright prend en charge l'octroi ou le refus des autorisations courantes, par exemple :

  • geolocation(Géolocalisation)
  • camera(Caméra)
  • microphone(Microphone)
  • notifications(Notifications)
const context = await browser.newContext({
  permissions: ['geolocation', 'notifications']
});

Simulation du basculement paysage/portrait

En modifiantviewportla configuration.

await context.newPage({
  viewport: { width: 812, height: 375 }, // 横屏
  isMobile: true
});

Exemple complet : tests mobiles

Exemple

const { chromium, devices } = require('playwright');

(async () => {
  const pixel5 = devices['Pixel 5'];

  const browser = await chromium.launch({ headless: false });
  const context = await browser.newContext({
    ...pixel5,
    geolocation: { longitude: 121.4737, latitude: 31.2304 }, // Shanghai
    permissions: ['geolocation']
  });

  const page = await context.newPage();
  await page.goto('https://www.google.com/maps');

  await page.screenshot({ path: 'mobile-map.png' });

  await browser.close();
})();

API courantes

API Description Exemple
devices['iPhone 12'] Obtenir la configuration de l'appareil const iphone = devices['iPhone 12']
context = browser.newContext({...device}) Activer la simulation d'appareil ...iPhone
page.tap(selector) Toucher l'élément await page.tap('#btn')
page.touchscreen.tap(x,y) Cliquer aux coordonnées await page.touchscreen.tap(100,200)
page.touchscreen.down(x,y) Appui du doigt await page.touchscreen.down(100,200)
page.touchscreen.up() Lever du doigt await page.touchscreen.up()
geolocation Définir la géolocalisation { longitude: 120, latitude: 30 }
permissions Définir les autorisations ['geolocation','camera']
viewport Définir la largeur et la hauteur de l'écran { width: 812, height: 375 }
isMobile Activer le mode mobile isMobile: true

Appareils courants

Playwright dispose d'une liste intégrée d'appareils courants, y comprisla série iPhone, la série Pixel, iPad, etc.

Liste des appareils courants Playwright

Playwright inclut des dizaines de configurations d'appareils courants (basées sur les données de Chrome DevTools). Lors de l'utilisation, via :

const { devices } = require('playwright');
const iphone = devices['iPhone 12'];

Vous pouvez obtenir les paramètres de configuration de cet appareil.

Série iPhone

Nom de l'appareil viewport deviceScaleFactor UA (abrév.) Remarques
iPhone SE 375 × 667 2 Safari iOS Petit écran classique
iPhone 6 375 × 667 2 Safari iOS Modèle plus ancien
iPhone 7 375 × 667 2 Safari iOS Modèle plus ancien
iPhone 8 375 × 667 2 Safari iOS Courantes
iPhone 8 Plus 414 × 736 3 Safari iOS Grand écran
iPhone X 375 × 812 3 Safari iOS Écran à encoche
iPhone 11 414 × 896 2 Safari iOS Courantes
iPhone 11 Pro 375 × 812 3 Safari iOS
iPhone 11 Pro Max 414 × 896 3 Safari iOS
iPhone 12 390 × 844 3 Safari iOS Populaire
iPhone 12 Pro 390 × 844 3 Safari iOS
iPhone 12 Pro Max 428 × 926 3 Safari iOS Grand écran
iPhone 12 Mini 360 × 780 3 Safari iOS Petit écran
iPhone 13 390 × 844 3 Safari iOS Populaire
iPhone 13 Pro 390 × 844 3 Safari iOS
iPhone 13 Pro Max 428 × 926 3 Safari iOS
iPhone 13 Mini 360 × 780 3 Safari iOS

Série Google Pixel

Nom de l'appareil viewport deviceScaleFactor UA (abrév.) Remarques
Pixel 2 411 × 731 2.6 Chrome Android Modèle plus ancien
Pixel 2 XL 411 × 823 3.5 Chrome Android Grand écran
Pixel 3 393 × 786 2.75 Chrome Android
Pixel 3 XL 412 × 847 3.5 Chrome Android
Pixel 4 353 × 745 2.75 Chrome Android
Pixel 4 XL 412 × 869 3.5 Chrome Android
Pixel 5 393 × 851 2.75 Chrome Android Recommandé

Série iPad

Nom de l'appareil viewport deviceScaleFactor UA (abrév.) Remarques
iPad (gen 6) 768 × 1024 2 Safari iOS Courantes
iPad (gen 7) 810 × 1080 2 Safari iOS
iPad Air 820 × 1180 2 Safari iOS
iPad Mini 768 × 1024 2 Safari iOS
iPad Pro 11 834 × 1194 2 Safari iOS
iPad Pro 12.9 1024 × 1366 2 Safari iOS Grand écran

Autres modèles Android

Nom de l'appareil viewport deviceScaleFactor UA (abrév.) Remarques
Galaxy S5 360 × 640 3 Chrome Android Plus ancien
Galaxy S8 360 × 740 4 Chrome Android
Galaxy S9+ 412 × 846 4.5 Chrome Android
Galaxy Note 3 360 × 640 3 Chrome Android
Galaxy Note 9 414 × 846 4.5 Chrome Android
Galaxy A51/71 412 × 914 2.63 Chrome Android Populaire

Utilisation

Exemple

const { chromium, devices } = require('playwright');

(async () => {
  const iPhone = devices['iPhone 12'];
  const browser = await chromium.launch({ headless: false });
  const context = await browser.newContext({
    ...iPhone,
    geolocation: { longitude: 116.4074, latitude: 39.9042 }, // Pékin
    permissions: ['geolocation']
  });
  const page = await context.newPage();
  await page.goto('https://www.example.com');
  await page.screenshot({ path: 'iphone12.png' });
  await browser.close();
})();
Autres extensions