Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Enterprise Automation Framework - Screenshot Project

A Selenium-based automation testing framework with screenshot capture on test failures, page objects, utilities, and a TestNG listener for lifecycle management.

Project Structure

ScreenShot/
├── pom.xml
├── testng.xml
├── README.md
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   ├── base/
│   │   │   │   └── BaseTest.java              (Base class with WebDriver setup)
│   │   │   ├── pages/
│   │   │   │   └── GooglePage.java             (Page Object for Google Search)
│   │   │   ├── utilities/
│   │   │   │   ├── ScreenshotUtil.java         (Screenshot capture utility)
│   │   │   │   └── ConfigReader.java           (Config properties loader)
│   │   │   └── listeners/
│   │   │       └── TestListener.java           (TestNG listener for screenshot on failure)
│   │   └── resources/
│   │       ├── config.properties               (Configuration settings)
│   │       └── log4j2.xml                      (Logging configuration)
│   └── test/
│       └── java/
│           └── tests/
│               └── GoogleTest.java             (Sample test)
├── screenshots/                               (Auto-generated: test failure screenshots)
├── reports/                                   (Auto-generated: test logs and reports)
└── target/                                    (Auto-generated: compiled classes)

Prerequisites

  1. Java 17+ (as per pom.xml maven.compiler.target)
  2. Maven 3.6+ (available at https://maven.apache.org/download.cgi)
  3. Chrome Browser (for ChromeDriver; WebDriverManager handles driver download)
  4. Eclipse IDE (recommended) or any Java IDE with TestNG plugin

Install Maven (if not already installed)

Windows:

  • Download Maven from https://maven.apache.org/download.cgi
  • Extract to a folder (e.g., C:\maven)
  • Add C:\maven\bin to system PATH environment variable
  • Verify: Open PowerShell and run mvn -version

Build & Run

Compile Project (without running tests)

cd D:\ScreenShot
mvn -DskipTests=true package

Run Tests in Headed Mode (default)

Browser window will be visible during test execution.

cd D:\ScreenShot
mvn test

Run Tests in Headless Mode

Browser runs in background (no UI visible).

cd D:\ScreenShot
mvn -Dheadless=true test

Run via Eclipse IDE

  1. Right-click on the project → Run AsTestNG Suite (or Maven → test)
  2. Or: Right-click testng.xmlRun AsTestNG Suite
  3. Or: Right-click GoogleTest.javaRun AsTestNG Test

Configuration

Edit src/main/resources/config.properties to adjust:

browser=chrome                    # Browser type (chrome)
base.url=https://www.google.com  # Base URL for tests
screenshots.dir=screenshots       # Screenshot directory
headless=false                    # false = visible, true = headless
implicit.wait=10                  # Implicit wait timeout in seconds

Override at Runtime

Pass system properties via Maven -D flag:

mvn -Dheadless=true -Dimplicit.wait=15 test

Key Features

  • BaseTest.java: Centralized WebDriver initialization with config-driven setup
  • ScreenshotUtil.java: Automatic screenshot capture with timestamped filenames
  • TestListener.java: TestNG listener that captures screenshots on test failures
  • ConfigReader.java: Loads config.properties for centralized configuration
  • GooglePage.java: Page Object model for Google Search interactions
  • log4j2.xml: Logging configuration (console + file output)

Test Execution Flow

  1. TestNG calls setUp() (from BaseTest) → Creates Chrome WebDriver
  2. Test method runs (e.g., openGoogle())
  3. On success: Test passes, browser closes
  4. On failure: TestListener captures screenshot → Browser closes → Screenshot saved to screenshots/
  5. Logs written to reports/test.log

Where Artifacts Are Saved

  • Screenshots: screenshots/ directory (created on first test run)
  • Logs: reports/test.log (created on first test run)
  • Compiled classes: target/classes/ and target/test-classes/

Troubleshooting

"mvn: The term 'mvn' is not recognized"

Solution: Maven is not installed or not in PATH.

  • Install Maven (see Prerequisites)
  • Add Maven bin folder to Windows PATH
  • Restart PowerShell/IDE

"Chrome driver not found / WebDriverManager fails"

Solution: WebDriverManager requires internet access to download ChromeDriver.

"Tests fail with 'element not found'"

Solution: Increase implicit wait or add explicit waits in tests.

  • Edit config.properties: implicit.wait=20
  • Or override at runtime: mvn -Dimplicit.wait=20 test

"Screenshots not captured on failure"

Solution: Ensure listener is registered and test extends BaseTest.

  • Verify testng.xml contains <listener class-name="listeners.TestListener"/>
  • Verify test class extends BaseTest
  • Check logs for errors in reports/test.log

Development Tips

Adding a New Test

  1. Create a new test class in src/test/java/tests/:

    public class MyTest extends BaseTest {
        @Test
        public void myTest() {
            setUp();
            // test code here
            tearDown();
        }
    }
  2. Register in testng.xml:

    <class name='tests.MyTest' />

Adding a New Page Object

  1. Create MyPage.java in src/main/java/pages/:

    public class MyPage {
        private final WebDriver driver;
        public MyPage(WebDriver driver) { this.driver = driver; }
        // locators and methods
    }
  2. Use in test:

    MyPage page = new MyPage(driver);

Using ConfigReader

String url = ConfigReader.get("base.url");
String browser = ConfigReader.get("browser");

Dependencies

  • Selenium: 4.23.1 (WebDriver automation)
  • TestNG: 7.10.2 (Test framework)
  • WebDriverManager: 5.9.2 (Automatic driver download)
  • Log4j2: 2.20.0 (Logging)
  • Commons IO: 2.11.0 (File utilities for screenshots)

Contact & Support

For issues or improvements, refer to the pom.xml or update configurations as needed.


Last Updated: July 16, 2026
Framework Version: 1.0
Java Version: 17+

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages