Adding Mobile Emulation to Your Pytest Test
Easily Add Mobile Testing to Your Test Suite
Learn how to simulate a mobile environment in your automated tests using Pytest and Chrome's mobile emulation features.
Why Use Mobile Emulation?
Testing how your website behaves on mobile devices is essential. Rather than using a physical device or a mobile browser emulator, Chrome allows you to simulate mobile conditions directly through WebDriver using mobileEmulation
settings.
Setting Up Mobile Emulation in Pytest
To demonstrate mobile emulation in Pytest, you'll need the following packages:
pytest
selenium
chromedriver
installed and in your system path
Here's a simple example that simulates a Nexus 5 device while accessing a webpage:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
def test_uncloying_new():
domain = "http://www.cryan.com"
mobile_emulation = {
"deviceMetrics": {"width": 360, "height": 640, "pixelRatio": 3.0},
"userAgent": "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) "
"AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 "
"Mobile Safari/535.19",
"clientHints": {"platform": "Android", "mobile": True}
}
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_experimental_option("mobileEmulation", mobile_emulation)
driver = webdriver.Chrome(options=chrome_options)
driver.get(domain)
assert "Welcome" in driver.page_source
driver.quit()
What's Happening Here?
- deviceMetrics: Simulates screen dimensions and pixel density.
- userAgent: Overrides the default user agent to a mobile one.
- clientHints: Helps simulate how modern mobile browsers send platform data.
- Chrome Options: Sets up a headless browser with mobile emulation enabled.
Benefits of Mobile Emulation in Tests
- No need for actual devices or external tools.
- Fast, scriptable, and easy to integrate into CI/CD pipelines.
- Improves confidence that your site works across form factors.