Extent Reports help you create clear and colorful test reports. They show which tests passed or failed in an easy way.
When you want to see a detailed report of your Selenium test results.
When you need to share test results with your team or manager.
When you want to track test progress over time with nice visuals.
When you want to add screenshots or logs to your test reports.
When you want to organize test results by test cases or features.
Syntax
Selenium Java
ExtentHtmlReporter htmlReporter = new ExtentHtmlReporter("extentReport.html");
ExtentReports extent = new ExtentReports();
extent.attachReporter(htmlReporter);
ExtentTest test = extent.createTest("TestName", "Test Description");
test.pass("Step passed message");
extent.flush();
Use ExtentHtmlReporter to create an HTML report file.
Call extent.flush() at the end to save the report.
Examples
This sets up the report file named report.html.
Selenium Java
ExtentHtmlReporter htmlReporter = new ExtentHtmlReporter("report.html");
ExtentReports extent = new ExtentReports();
extent.attachReporter(htmlReporter);
This creates a test entry and marks it as passed.
Selenium Java
ExtentTest test = extent.createTest("Login Test", "Tests user login");
test.pass("Login successful");
This marks the test as failed with a message.
Selenium Java
test.fail("Login failed due to invalid credentials");
Sample Program
This program sets up Extent Reports, creates two test cases with pass and fail steps, and saves the report as testReport.html.
Selenium Java
import com.aventstack.extentreports.ExtentReports;
import com.aventstack.extentreports.ExtentTest;
import com.aventstack.extentreports.reporter.ExtentHtmlReporter;
public class ExtentReportSetup {
public static void main(String[] args) {
ExtentHtmlReporter htmlReporter = new ExtentHtmlReporter("testReport.html");
ExtentReports extent = new ExtentReports();
extent.attachReporter(htmlReporter);
ExtentTest test1 = extent.createTest("Google Search Test", "Test Google search functionality");
test1.pass("Navigated to Google homepage");
test1.pass("Entered search text");
test1.pass("Search results displayed successfully");
ExtentTest test2 = extent.createTest("Login Test", "Test login with invalid credentials");
test2.fail("Login failed due to wrong password");
extent.flush();
System.out.println("Report generated: testReport.html");
}
}
OutputSuccess
Important Notes
Always call extent.flush() to write the report file.
Use meaningful test names and descriptions for clarity.
You can add screenshots or logs to tests for better reports.
Summary
Extent Reports create easy-to-read HTML test reports.
Set up with ExtentHtmlReporter and attach to ExtentReports.
Create tests with createTest() and log results with pass() or fail().
Practice
(1/5)
1. What is the primary purpose of using ExtentHtmlReporter in Selenium Java testing?
easy
A. To execute Selenium WebDriver tests
B. To locate web elements on a page
C. To generate an HTML report for test execution results
D. To manage browser windows during tests
Solution
Step 1: Understand the role of ExtentHtmlReporter
ExtentHtmlReporter is used to create a visual HTML report that shows test results clearly.
Step 2: Differentiate from other components
It does not run tests or interact with browsers; it only formats and outputs reports.
Final Answer:
To generate an HTML report for test execution results -> Option C
Quick Check:
ExtentHtmlReporter = HTML report generator [OK]
Hint: ExtentHtmlReporter creates HTML reports, not test execution [OK]
Common Mistakes:
Confusing ExtentHtmlReporter with WebDriver
Thinking it runs tests
Assuming it manages browser actions
2. Which of the following is the correct way to initialize ExtentReports with ExtentHtmlReporter in Java?
easy
A. ExtentReports extent = new ExtentReports(); extent.createReporter("report.html");
B. ExtentHtmlReporter reporter = new ExtentHtmlReporter("report.html"); ExtentReports extent = new ExtentReports(); extent.attachReporter(reporter);
C. ExtentHtmlReporter reporter = new ExtentHtmlReporter(); extent.attachReporter(reporter);
D. ExtentReports extent = new ExtentReports("report.html"); ExtentHtmlReporter reporter = new ExtentHtmlReporter();
Solution
Step 1: Create ExtentHtmlReporter with file path
You must instantiate ExtentHtmlReporter with the report file name or path.
Step 2: Attach reporter to ExtentReports instance
Create ExtentReports object and attach the reporter using attachReporter method.
Final Answer:
ExtentHtmlReporter reporter = new ExtentHtmlReporter("report.html"); ExtentReports extent = new ExtentReports(); extent.attachReporter(reporter); -> Option B
Quick Check:
Initialize reporter with path, then attach to ExtentReports [OK]
Hint: Create reporter with path, then attach to ExtentReports [OK]
Common Mistakes:
Not passing file path to ExtentHtmlReporter constructor
Calling attachReporter before creating ExtentReports
Using non-existent methods like createReporter
3. Given the following code snippet, what will be the output in the Extent Report after execution?
ExtentHtmlReporter reporter = new ExtentHtmlReporter("testReport.html");
ExtentReports extent = new ExtentReports();
extent.attachReporter(reporter);
ExtentTest test = extent.createTest("LoginTest");
test.pass("Login successful");
extent.flush();
medium
A. The report will show a test named 'LoginTest' marked as failed.
B. The report will be empty because flush() is called before creating the test.
C. The code will throw a runtime exception due to missing test initialization.
D. The report will show a test named 'LoginTest' marked as passed with message 'Login successful'.
Solution
Step 1: Analyze test creation and logging
The test 'LoginTest' is created and logged as passed with message 'Login successful'.
Step 2: Understand flush() role
Calling extent.flush() writes the report to the file including all logged tests.
Final Answer:
The report will show a test named 'LoginTest' marked as passed with message 'Login successful'. -> Option D
Quick Check:
createTest + pass + flush = Passed test in report [OK]
Hint: Create test, log pass, then flush to save report [OK]
Common Mistakes:
Thinking flush() clears tests
Assuming test is failed without fail() call
Believing report is empty without flush()
4. Identify the error in the following Extent Reports setup code:
ExtentHtmlReporter reporter = new ExtentHtmlReporter();
ExtentReports extent = new ExtentReports();
extent.attachReporter(reporter);
ExtentTest test = extent.createTest("SearchTest");
test.pass("Search executed");
extent.flush();
medium
A. ExtentHtmlReporter must be initialized with a file path in its constructor.
B. ExtentReports cannot attach more than one reporter.
C. createTest() method requires two parameters.
D. flush() should be called before creating tests.
Solution
Step 1: Check ExtentHtmlReporter initialization
ExtentHtmlReporter requires a file path string in its constructor to specify report output location.
Step 2: Verify other method usages
attachReporter, createTest, and flush are used correctly; no multiple reporter restriction or parameter issues.
Final Answer:
ExtentHtmlReporter must be initialized with a file path in its constructor. -> Option A
Quick Check:
Reporter needs file path on creation [OK]
Hint: Always give file path when creating ExtentHtmlReporter [OK]
Common Mistakes:
Omitting file path in ExtentHtmlReporter constructor
Misunderstanding createTest parameters
Calling flush too early
5. You want to create an Extent Report that logs multiple tests and marks one as failed with a custom error message. Which code snippet correctly sets up the report and logs these results?
hard
A. ExtentHtmlReporter reporter = new ExtentHtmlReporter("multiTestReport.html");
ExtentReports extent = new ExtentReports();
extent.attachReporter(reporter);
ExtentTest test1 = extent.createTest("Test1");
test1.pass("Test1 passed");
ExtentTest test2 = extent.createTest("Test2");
test2.fail("Test2 failed due to timeout");
extent.flush();
B. ExtentReports extent = new ExtentReports("multiTestReport.html");
ExtentHtmlReporter reporter = new ExtentHtmlReporter();
extent.createTest("Test1").pass("Test1 passed");
extent.createTest("Test2").fail("Test2 failed due to timeout");
extent.flush();
C. ExtentHtmlReporter reporter = new ExtentHtmlReporter();
ExtentReports extent = new ExtentReports();
extent.attachReporter(reporter);
extent.createTest("Test1").pass("Test1 passed");
extent.createTest("Test2").fail("Test2 failed due to timeout");
extent.flush();
D. ExtentHtmlReporter reporter = new ExtentHtmlReporter();
ExtentReports extent = new ExtentReports();
extent.attachReporter(reporter);
ExtentTest test1 = extent.createTest("Test1");
test1.fail("Test1 failed");
ExtentTest test2 = extent.createTest("Test2");
test2.pass("Test2 passed");
extent.flush();
Solution
Step 1: Initialize ExtentHtmlReporter with file path
Instantiate ExtentHtmlReporter with the path to the report file, create an ExtentReports instance, and attach the reporter.
Step 2: Create multiple tests and log statuses
Create ExtentTest instances with createTest(), log one with pass("message") and one with fail("custom error message"), then flush().
Final Answer:
ExtentHtmlReporter reporter = new ExtentHtmlReporter("multiTestReport.html"); ExtentReports extent = new ExtentReports(); extent.attachReporter(reporter); ExtentTest test1 = extent.createTest("Test1"); test1.pass("Test1 passed"); ExtentTest test2 = extent.createTest("Test2"); test2.fail("Test2 failed due to timeout"); extent.flush(); -> Option A
Quick Check:
Reporter with path + attach + pass/fail + flush [OK]
Hint: Attach reporter with path, create tests, log pass/fail, then flush [OK]
Common Mistakes:
Not passing file path to ExtentHtmlReporter
Swapping pass and fail calls
Calling flush before logging tests
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.