This skill enables comprehensive browser-based test automation for web applications using Selenium WebDriver within a Java/Maven environment. It provides patterns for Page Object Model, explicit waits, fluent assertions, and CI-ready test infrastructure.
Activation: This skill is triggered when you need to create Selenium tests, debug browser automation, implement Page Objects, or set up Java test infrastructure.
Note: Selenium Manager (included in Selenium 4.6+) automatically handles browser driver binaries - no manual driver setup required.
-
Analyze the requirement
- Identify the user flow to test
- List elements to interact with
- Define expected outcomes
-
Set up Page Objects (see Page Object Model Guide)
- Create BasePage with common methods
- Create specific Page class with locators
- Implement action methods with
-
Implement test class
- Extend BaseTest
- Use , ,
- Use Soft Assertions for validations
-
Run and validate
bash
mvn test -Dtest=YourTest -Dheadless=false
-
Run in non-headless mode
bash
mvn test -Dtest=FailingTest -Dheadless=false
-
Add screenshot capture
java
((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
-
Check browser console logs
java
driver.manage().logs().get(LogType.BROWSER);
-
Verify locator using browser DevTools
javascript
document.querySelector('[data-testid="element"]')
-
Check wait conditions - increase timeout or change ExpectedCondition
-
Create Maven project structure
Run: scripts/setup-maven-project.ps1 -ProjectName "my-tests"
-
Configure dependencies in pom.xml
- See scripts/pom-template.xml
-
Create base classes
- BasePage, BaseTest, WebDriverFactory
- See Page Object Model Guide
-
Configure parallel execution
properties
# src/test/resources/junit-platform.properties
junit.jupiter.execution.parallel.enabled=true
✅
Never use - Use explicit waits with
✅
Implement Page Object Model - Separate locators from test logic
✅
Use Soft Assertions - Report all failures in one test run
✅
Prefer stable locators -
,
, semantic CSS
✅
Add annotations - Document actions in Allure reports
✅
Clean up resources - Close driver in
✅
Keep tests independent - Each test runs in isolation
✅
Use - Human-readable test descriptions
✅
Generate dynamic data - Use
for test data