Skip to content

Lenskart Automation Testing Interview Questions & Answers

Curated interview practice questions with answers. These are practice scenarios, not a verified list of past interview questions.

About Lenskart hiring for Automation Testing roles

Lenskart is an Indian eyewear company that sells spectacles, sunglasses and contact lenses through its website, app and a large chain of retail stores. It combines online shopping with home eye tests, virtual try-on technology and in-house manufacturing. It hires software engineers, data analysts, product managers and retail and operations roles across its technology and business teams.

For Automation Testing roles, this Lenskart practice set focuses most on Selenium WebDriver (7), Page Object Model (5), Git, Maven and Jenkins (5), Appium Mobile Automation (4). It has 1 easy, 29 medium, 10 hard questions, so you can start easy and work up to the harder ones.

Company type
E-commerce & consumer tech
Headquarters
Gurugram, India
Main India offices
Gurugram, Bengaluru

Lenskart Automation Testing interview process

  1. Online coding or analytics assessment
  2. Technical round
  3. Case or managerial round
  4. HR round

Typical pattern based on public candidate experiences. Rounds vary by role, team and year.

Solved for LenskartStart practicing
3 QUESTIONS FREESign up to unlock the full question bank and track your progress.Unlock every question and answer, then continue practising company-wise and package-wise.
3 questions free Unlock the rest in seconds
01

Write a Java stream that extracts and sorts product prices from a list of WebElements.

Save to ▾
Show answer
List<Double> prices = driver.findElements(By.cssSelector(".price")) .stream() .map(WebElement::getText) .map(t -> t.replaceAll("[^0-9.]", "")) .map(Double::parseDouble) .sorted() .collect(Collectors.toList()); System.out.println(prices);
02

A mobile test fails intermittently because an animation is still running when you tap. How do you fix it?

Save to ▾
Show answer
Wait for a stable end state instead of sleeping, for example wait until the target element is visible and enabled or until a spinner disappears. On test devices and emulators you can disable animations with adb shell settings put global window_animation_scale 0, along with the transition and animator scales. Ask developers for an idle indicator if needed. Disabling animations makes tests faster and more stable, but keep one manual check of the real animations.
03

How do you get reports, screenshots and downloaded files out of a Docker container?

Save to ▾
Show answer
Use volumes. A bind mount maps a host folder into the container, for example -v $(pwd)/target:/app/target, so reports written in the container appear on the CI agent for archiving. Named volumes are managed by Docker and suit data that should survive restarts. For browser downloads, mount the node's download folder or enable the Grid's managed downloads with the se:downloadsEnabled capability to fetch files through the Grid API.
04

How do you upload a file with REST Assured?

Save to ▾
Show answer
Use multipart: given().multiPart("file", new File("src/test/resources/report.pdf"), "application/pdf").formParam("type", "invoice").when().post("/upload").then().statusCode(200). REST Assured sets the multipart/form-data content type automatically. Verify both the status and the response, such as the returned file id or size, and test edge cases like empty, oversized and wrong-type files.
05

How do you handle authentication types in REST Assured?

Save to ▾
Show answer
Basic auth uses auth().preemptive().basic(user, pass). Bearer tokens are set as a header: header("Authorization", "Bearer " + token). OAuth 2.0 can use auth().oauth2(token) after fetching the token from the token endpoint. API keys go in a header or query param. Fetch tokens once per suite or cache them with an expiry check rather than logging in before every test.
06

What are relative locators in Selenium 4?

Save to ▾
Show answer
Locators such as above, below, toLeftOf and near that find elements by their position relative to another element.
07

How do you handle environment-specific configuration?

Save to ▾
Show answer
Keep URLs and credentials in per-environment config files or variables, choose with a command-line parameter and never hard-code secrets.
08

How would you design a framework that supports both web and mobile using POM?

Save to ▾
Show answer
Define page interfaces for business actions, such as LoginScreen.loginAs(). Provide web and mobile implementations using Selenium and Appium, chosen by a factory from configuration. Tests depend only on the interfaces. Share test data, config, reporting and API helpers. Accept that some flows differ by platform and keep those in platform-specific tests rather than forcing one abstraction.
09

How do you fix a Maven dependency conflict?

Save to ▾
Show answer
Run mvn dependency:tree to see which versions are pulled in transitively. Maven picks the nearest version, which may not be the one you need. Fix by declaring the required version in dependencyManagement, excluding the unwanted transitive dependency with exclusions, or upgrading the library that brings the old version. Conflicts often appear as NoSuchMethodError or ClassNotFoundException at runtime.
10

How do you publish Allure or Extent reports from Jenkins?

Save to ▾
Show answer
For Allure, install the Allure Jenkins plugin, configure the commandline tool, and add allure results: [[path: 'target/allure-results']] in the post always block. For Extent, archive the HTML file and use the HTML Publisher plugin to show it as a build link. Keep report history per build and share the link in failure notifications.
11

What is the @Factory annotation in TestNG?

Save to ▾
Show answer
@Factory creates test class instances dynamically, each with different constructor data, so all tests in the class run once per instance. For example a factory can create LoginTests for chrome and firefox. It differs from DataProvider, which runs one method many times with different arguments. Factory is useful when a whole class should repeat for each configuration.
12

How do you decide what to automate?

Save to ▾
Show answer
Automate stable, repetitive, high-risk and data-heavy flows (smoke, regression). Skip one-time tests, frequently changing UI and checks needing human judgement. Compare run frequency × manual time with build and maintenance cost.
13

You need 2,000 UI tests to run on every pull request in under 20 minutes. How would you design the infrastructure?

Save to ▾
Show answer
First shrink the UI suite by moving checks to API and unit level. Then run the rest on an autoscaling Grid, for example Kubernetes with KEDA, sized so tests divided by slots times average duration fits the budget. Make tests independent with API-based setup and ThreadLocal drivers. Shard tests across CI agents, fail fast on smoke tests first, and track flaky tests separately. Pin image versions and monitor queue time.
14

How does the DataProvider annotation work?

Save to ▾
Show answer
A method annotated with @DataProvider returns a 2D object array and the test with dataProvider = "name" runs once per row.
15

How do you switch between native and webview contexts in a hybrid app?

Save to ▾
Show answer
// Requires the webview to be debuggable in the app build Set<String> contexts = driver.getContextHandles(); for (String ctx : contexts) { if (ctx.startsWith("WEBVIEW")) { driver.context(ctx); break; } } driver.findElement(By.cssSelector("#email")).sendKeys("qa@test.com"); // back to native controls driver.context("NATIVE_APP");
16

POST vs PUT vs PATCH?

Save to ▾
Show answer
POST creates a resource, PUT replaces the whole resource (idempotent) and PATCH updates part of it.
17

How do you pass parameters from testng.xml?

Save to ▾
Show answer
Define parameter name and value in the XML and read them with @Parameters in the test or configuration method.
18

What is the Hybrid framework?

Save to ▾
Show answer
A framework combining data-driven, keyword-driven and POM approaches with reporting and utilities, giving flexibility and reuse.
19

How do you handle a web table in Selenium?

Save to ▾
Show answer
Locate rows and columns with XPath such as //table//tr and //td, loop through them to read or click cells, or build the XPath dynamically from the row text.
20

Write a docker-compose.yml that runs a Selenium hub with Chrome and Firefox nodes.

Save to ▾
Show answer
services: selenium-hub: image: selenium/hub:4.25.0 ports: - "4442:4442" - "4443:4443" - "4444:4444" chrome: image: selenium/node-chrome:4.25.0 shm_size: 2gb depends_on: - selenium-hub environment: - SE_EVENT_BUS_HOST=selenium-hub - SE_EVENT_BUS_PUBLISH_PORT=4442 - SE_EVENT_BUS_SUBSCRIBE_PORT=4443 firefox: image: selenium/node-firefox:4.25.0 shm_size: 2gb depends_on: - selenium-hub environment: - SE_EVENT_BUS_HOST=selenium-hub - SE_EVENT_BUS_PUBLISH_PORT=4442 - SE_EVENT_BUS_SUBSCRIBE_PORT=4443
21

A developer changed the UI and 40 tests failed with NoSuchElementException. How does POM help here?

Save to ▾
Show answer
Because locators live only in page classes, I check which page object methods fail, update the changed locators in those few classes, and rerun. Usually 40 failures map to two or three locators. I would also ask developers to add stable data-testid attributes and review UI changes with QA early, so future changes do not break tests unexpectedly.
22

Tell me about a time you mentored a junior tester in Java and automation.

Save to ▾
Show answer
Situation: two new joiners from manual testing struggled with framework code. Task: help them contribute within a sprint. Action: I paired with them daily for an hour, gave small tasks like adding a locator then a full test, and reviewed their code with explanations rather than rewriting it. Result: within three weeks both were writing tests independently, and our automation backlog shrank.
23

Difference between absolute and relative XPath?

Save to ▾
Show answer
Absolute starts from the root (/html/...) and breaks easily; relative starts anywhere with // and is more stable, for example //input[@id='email'].
24

What is the difference between open and closed workload models in load testing?

Save to ▾
Show answer
In a closed model a fixed number of users loop through the scenario, so when the server slows down, users wait and the arrival rate drops, which can hide problems. In an open model new requests arrive at a set rate regardless of response time, like real internet traffic, so a slow server builds a queue. JMeter thread groups are closed by default; the Open Model Thread Group or throughput timers approximate open workloads.
25

Tell me about a time a performance test found a serious issue before release.

Save to ▾
Show answer
Situation: a new search feature passed functional testing. Task: run a load test at expected peak traffic. Action: at 150 users the 95th percentile jumped from under one second to nine seconds. I correlated it with database metrics, found a full table scan caused by a missing index and shared the query and graphs with developers. Result: after the fix, response time stayed under 800 milliseconds at 400 users, and release went ahead on time.
26

How do you mock an external API in automation tests?

Save to ▾
Show answer
Use a tool such as WireMock or MockServer to run a stub server that returns predefined responses for given requests. Point the application or tests to the stub with configuration. This lets you test error codes, timeouts and edge cases that are hard to trigger on the real service, and keeps tests stable when the third party is down. Still keep a few tests against the real integration.
27

What are the different types of waits in Selenium?

Save to ▾
Show answer
Implicit, explicit (WebDriverWait with ExpectedConditions) and fluent waits; avoid mixing implicit and explicit waits and never rely on Thread.sleep.
28

What is idempotency in REST APIs and why does it matter for testing?

Save to ▾
Show answer
An idempotent operation gives the same result no matter how many times it is called. GET, PUT and DELETE should be idempotent; POST usually is not. Testers verify that repeating a PUT does not create duplicates and that a second DELETE returns a sensible status like 404 or 204. Retries in networks and CI make idempotency important to verify.
29

What is the difference between native, hybrid and mobile web apps from a testing point of view?

Save to ▾
Show answer
A native app is built with platform SDKs and is tested through native locators like accessibility id or resource-id. A mobile web app runs in the device browser, so you automate it much like desktop Selenium with mobile Chrome or Safari. A hybrid app wraps web content inside a native shell, so tests switch between the NATIVE_APP context and a WEBVIEW context. Knowing the type decides your driver, locators and setup.
30

What are Maven profiles and how do you use them in automation?

Save to ▾
Show answer
Profiles are sets of configuration activated by name, such as -Pqa or -Pstaging, or by conditions. In automation they switch environment URLs, suite files, browsers or parallel settings without changing code. For example a regression profile sets suiteXml to regression.xml and threadCount to 4. Combined with properties files, profiles keep one codebase for every environment.
31

How do you handle alerts and pop-ups?

Save to ▾
Show answer
driver.switchTo().alert() lets you accept, dismiss, read text or send keys. Browser windows are handled with window handles.
32

What are try-with-resources and why use them?

Save to ▾
Show answer
A try block that automatically closes resources such as file readers or streams, preventing leaks without a finally block.
33

Write a declarative Jenkinsfile that runs Maven tests and publishes results.

Save to ▾
Show answer
pipeline { agent any parameters { choice(name: 'SUITE', choices: ['smoke', 'regression']) } stages { stage('Checkout') { steps { checkout scm } } stage('Test') { steps { sh "mvn clean test -DsuiteXml=${params.SUITE}.xml" } } } post { always { junit 'target/surefire-reports/*.xml' archiveArtifacts artifacts: 'target/screenshots/**', allowEmptyArchive: true } } }
34

How do you scroll a page in Selenium?

Save to ▾
Show answer
Use JavascriptExecutor with window.scrollTo or scrollIntoView, or the Actions class scroll methods in Selenium 4.
35

How do you test deep links in a mobile app with Appium?

Save to ▾
Show answer
On Android use the mobile: deepLink command with the URL and package, for example driver.executeScript("mobile: deepLink", Map.of("url", "shop://product/42", "package", "com.example.shop")). On iOS simulators driver.get with the custom URL opens it, though Safari may show a confirm dialog to handle. Then assert that the correct screen and data are shown. Deep links are also a great shortcut to reach deep screens quickly in other tests.
36

How do you handle StaleElementReferenceException?

Save to ▾
Show answer
Re-locate the element after the DOM refreshes, use explicit waits for the refreshed element, don't keep element references for long, or wrap the action in retry logic.
37

Write a JSR223 Groovy PostProcessor that reads a JSON response and stores a value as a JMeter variable.

Save to ▾
Show answer
// JSR223 PostProcessor, language: groovy import groovy.json.JsonSlurper def body = prev.getResponseDataAsString() def json = new JsonSlurper().parseText(body) if (json?.orderId) { vars.put('orderId', json.orderId.toString()) } else { prev.setSuccessful(false) prev.setResponseMessage('orderId missing in response') }
38

What are the advantages of version control for test code?

Save to ▾
Show answer
Git tracks changes, enables code review, branching and rollback and lets teams collaborate on the framework safely.
39

How do you set up distributed load testing in JMeter?

Save to ▾
Show answer
One controller machine coordinates several worker machines that generate the load. On each worker start jmeter-server with the same JMeter and Java versions, place CSV files locally and open the RMI ports in the firewall. On the controller list the workers in remote_hosts in jmeter.properties, or pass -R host1,host2, and run in non-GUI mode with -r or -R. Remember that thread counts multiply per worker, so 100 threads on 4 workers gives 400 users.
40

You join a project where tests call driver.findElement directly everywhere. How do you move to POM?

Save to ▾
Show answer
I would not rewrite everything at once. First create the base structure: DriverManager, BasePage and config. Then pick the most-used flows, such as login and navigation, create page objects for them and migrate tests touching those pages. Agree that new tests must use POM, and migrate old tests when they are next changed. Track progress so the team sees improvement in maintenance time.

Tips to crack the Lenskart Automation Testing interview

  • For tech roles, practise DSA and backend basics, and be ready to discuss APIs, databases and scaling e-commerce systems.
  • For analyst roles, revise SQL, Excel and metrics like conversion rate, average order value and store performance.
  • Understand Lenskart's omnichannel model of online plus offline stores to answer business and product questions with context.
  • Keep a one-minute story ready for every project on your CV: problem, your part, tools, result.
  • Practise the hard questions on this page aloud; Lenskart interviewers usually ask follow-ups on your first answer.

Frequently asked questions

How many rounds are there in the Lenskart Automation Testing interview?

Candidates usually go through 4 stages: Online coding or analytics assessment; Technical round; Case or managerial round; HR round. The exact rounds change with the role, team, location and your experience, so confirm the process with the recruiter.

Which topics should I prepare for the Lenskart Automation Testing interview?

This practice set leans on Selenium WebDriver (7), Page Object Model (5), Git, Maven and Jenkins (5), Appium Mobile Automation (4). Revise those first, then practise explaining one or two of your own projects end to end, because most Lenskart interviewers ask you to walk through real work.

Are these the exact questions asked at Lenskart?

No. These are curated practice questions that match the skills and difficulty usually tested in e-commerce & consumer tech interviews like Lenskart's. They are not a leaked or verified list of past questions.

Where does Lenskart hire Automation Testing professionals in India?

Lenskart has large teams in Gurugram, Bengaluru. Openings and locations change often, so check the Lenskart careers page and filter by city and experience.

Automation Testing questions for similar companies