Automation Test Engineer
UI automation (Playwright, Selenium) questions
128 questions on UI automation (Playwright, Selenium) for automation test engineers, easiest first.
Easy 38
- Choosing a stable locatoreasy
- Waiting for an elementeasy
- Headless modeeasy
- Reading a CSS selectoreasy
- A missing awaiteasy
- BeforeEach or BeforeAlleasy
- How Selenium talks to a browsereasy
- Browsers Playwright coverseasy
- Using the trace viewereasy
- Expecting an exception in JUnit 5easy
- Finding a button by role and nameeasy
- Recording a first draft of a testeasy
- Stepping through a failing testeasy
- What a browser context gives youeasy
- Uploading a fileeasy
- Testing a phone layouteasy
- Grouping actions in the reporteasy
- Checking many fields at onceeasy
- A menu that opens on hovereasy
- Dragging a card to another columneasy
- Choosing from a native dropdowneasy
- Ticking a checkbox safelyeasy
- Running against different environmentseasy
- A staging site with a self-signed certificateeasy
- Keeping videos only for failureseasy
- No more downloading chromedrivereasy
- Checking that something is absenteasy
- Absolute or relative XPatheasy
- Accepting a browser alert in Seleniumeasy
- The Select helper in Seleniumeasy
- quit() or close()easy
- Uploading a file in Seleniumeasy
- What Selenium Grid is foreasy
- A reusable Cypress commandeasy
- Languages Playwright supportseasy
- Checking that a tab is activeeasy
- Where Cypress test code runseasy
- Loading test data in Cypresseasy
Medium 53
- Web-first assertionsmedium
- StaleElementReferenceExceptionmedium
- Speeding up logged-in testsmedium
- Testing an error statemedium
- Click intercepted by an overlaymedium
- A custom Playwright fixturemedium
- Shared driver in parallel runsmedium
- Splitting a suite across machinesmedium
- Waiting for a request in Cypressmedium
- Cypress values are not returnedmedium
- An explicit wait in Seleniummedium
- Mobile locators in Appiummedium
- Tests for several user rolesmedium
- Page objects and navigationmedium
- Seeing all field failures in JUnitmedium
- Tests that depend on each othermedium
- The app uses data-qa, not data-testidmedium
- Why locators survive re-rendersmedium
- What Playwright checks before a clickmedium
- Waiting for a backend statusmedium
- Changing a request on its way outmedium
- Picking one product cardmedium
- The risk of first()medium
- Checking a downloaded reportmedium
- A confirm dialog that never acceptsmedium
- A link that opens a new tabmedium
- One suite, several browsersmedium
- A user in Dubaimedium
- First run of a screenshot testmedium
- Trace settings for CImedium
- Marking a known bugmedium
- Creating test data quicklymedium
- An autocomplete that ignores fillmedium
- Full text or part of itmedium
- Checking the number of resultsmedium
- Starting the app for the testsmedium
- A wait that ignores early errorsmedium
- A button with extra spacesmedium
- Hovering in Seleniummedium
- Switching to a new window in Seleniummedium
- What "clickable" really checksmedium
- Relative locators in Selenium 4medium
- The risk of @CacheLookupmedium
- Shadow DOM in Seleniummedium
- Logging in once in Cypressmedium
- Stubbing an API in Cypressmedium
- Fast-forwarding time in Cypressmedium
- How Cypress retries a chainmedium
- A date picker used on ten pagesmedium
- Picking a date six months aheadmedium
- A toast that vanishes quicklymedium
- Automated accessibility checksmedium
- Checking a sorted columnmedium
Hard 37
- Hidden race in a testhard
- Element inside an iframehard
- Noisy screenshot comparisonshard
- Choosing a tool for multi-tab flowshard
- Missing the response you wait forhard
- Waiting for network idlehard
- Reusing one page for speedhard
- Snapshot tests with changing fieldshard
- What WebDriver BiDi addshard
- Testing a 15-minute session timeouthard
- Replaying recorded API traffichard
- A five-second assertion in a long testhard
- A login setup that shows in reportshard
- An element inside shadow DOMhard
- A row that is not in the DOMhard
- A variable that is undefined in evaluatehard
- Checking structure, not pixelshard
- Paying one invoice in a tablehard
- A CAPTCHA on the sign-up formhard
- Logging in with an authenticator codehard
- Checking that a spinner is gonehard
- Retrying a group of stepshard
- A click that does nothinghard
- Extra words in a table cellhard
- Implicit plus explicit waitshard
- Clicking through JavaScripthard
- Passes headed, fails headlesshard
- Uploads that fail on Gridhard
- A cookie that will not sethard
- Logging in on another domain in Cypresshard
- When page objects get too bighard
- Finding an item in an infinite feedhard
- Faster loads, new failureshard
- getText() returns an empty stringhard
- Simulating a slow network everywherehard
- Moving off a flaky Selenium suitehard
- Should page objects asserthard