Responsive breakpoint testing checks if a website looks and works well on different screen sizes. It helps make sure users have a good experience on phones, tablets, and desktops.
Responsive breakpoint testing in Cypress
cy.viewport(width, height) // or cy.viewport(presetName) // Then write tests to check page elements after setting viewport
cy.viewport() sets the browser size for the test.
You can use common device names like 'iphone-6', 'ipad-2', or specify width and height in pixels.
cy.viewport(320, 480) // sets viewport to 320px wide and 480px tall
cy.viewport('ipad-2') // sets viewport to iPad 2 dimensions
cy.viewport('macbook-15') // sets viewport to 1440x900 for a laptop screen
This test checks if the mobile menu button appears on a small screen and the full desktop menu appears on a larger screen.
describe('Responsive Breakpoint Testing', () => { it('shows mobile menu on small screens', () => { cy.viewport('iphone-6') cy.visit('https://example.cypress.io') cy.get('.mobile-menu-button').should('be.visible') }) it('shows full menu on desktop screens', () => { cy.viewport(1280, 720) cy.visit('https://example.cypress.io') cy.get('.desktop-menu').should('be.visible') }) })
Always set the viewport before visiting the page to ensure the page loads with the correct size.
Use assertions that check visibility or layout changes specific to each breakpoint.
Test multiple breakpoints to cover common device sizes.
Responsive breakpoint testing uses cy.viewport() to simulate different screen sizes.
It helps verify that UI elements adapt correctly on phones, tablets, and desktops.
Write separate tests for each important screen size to catch layout issues early.
Practice
cy.viewport() in Cypress tests?Solution
Step 1: Understand
cy.viewport()rolecy.viewport()changes the browser size to simulate devices.Step 2: Identify its use in responsive testing
This helps check if UI adapts correctly on phones, tablets, and desktops.Final Answer:
To simulate different screen sizes for responsive testing -> Option DQuick Check:
cy.viewport() = simulate screen sizes [OK]
- Confusing viewport with API mocking
- Thinking it speeds up tests by skipping UI
- Assuming it captures screenshots
Solution
Step 1: Recall Cypress viewport presets
Cypress supports device names like 'iphone-6' incy.viewport().Step 2: Check syntax correctness
cy.viewport('iphone-6') uses correct method and exact device name string.Final Answer:
cy.viewport('iphone-6') -> Option AQuick Check:
Correct device name string in cy.viewport() [OK]
- Using wrong method name like cy.setViewport()
- Incorrect device name casing or spelling
- Passing numbers without quotes for presets
cy.viewport('ipad-2')
cy.get('.menu').should('be.visible')Solution
Step 1: Understand viewport preset 'ipad-2'
'ipad-2' is a valid Cypress preset simulating iPad 2 screen size.Step 2: Analyze assertion behavior
The test checks if element with class .menu is visible at that size.Final Answer:
Test passes if .menu is visible on iPad 2 screen size -> Option BQuick Check:
Valid preset + visibility check = pass if visible [OK]
- Thinking 'ipad-2' is invalid preset
- Assuming missing semicolons cause errors in Cypress
- Believing viewport is ignored without explicit reload
cy.viewport(1024, 768)
cy.get('#nav').should('be.visible')
cy.viewport('mobile')
cy.get('#nav').should('not.be.visible')Solution
Step 1: Check viewport presets used
1024x768 is valid, but 'mobile' is not a recognized preset in Cypress.Step 2: Understand impact of invalid preset
Using 'mobile' causes Cypress to throw an error and fail the test.Final Answer:
Invalid viewport preset 'mobile' causes test failure -> Option CQuick Check:
Use only valid viewport presets [OK]
- Assuming 'mobile' is a valid preset
- Thinking missing waits cause failure here
- Confusing selector correctness with viewport issues
Solution
Step 1: Understand responsive testing goal
We want to verify header visibility on both desktop and mobile screen sizes.Step 2: Choose best Cypress approach
Writing separate tests with explicit viewport sizes ensures coverage of both layouts.Final Answer:
Write two separate tests using cy.viewport(1440, 900) and cy.viewport(375, 667) with visibility assertions -> Option AQuick Check:
Separate viewport tests cover all breakpoints [OK]
- Assuming one viewport size covers all devices
- Ignoring desktop or mobile viewport testing
- Relying on default viewport without changes
Ready to prove it?
Pass the test and this pattern moves unknown
