Skip to content

/webapp-selenium-testing

Author and maintain versioned Selenium WebDriver tests with Java and JUnit 5. Use for creating, debugging, or running Selenium specs, implementing Page Objects, handling explicit waits, capturing screenshots, or setting up Maven test projects. Supports Chrome, Firefox, and Edge.

From plugin
test-automation-skills-agents
26410 skills7 agents

Claude Code

$ npx -y skills add fugazi/test-automation-skills-agents --skill webapp-selenium-testing --agent claude-code

SKILL.md

webapp-selenium-testing.SKILL.md
name: webapp-selenium-testing
description: 'Author and maintain versioned Selenium WebDriver tests with Java and JUnit 5. Use for creating, debugging, or running Selenium specs, implementing Page Objects, handling explicit waits, capturing screenshots, or setting up Maven test projects. Supports Chrome, Firefox, and Edge. Keywords: Selenium WebDriver, Java, JUnit 5, Page Object Model, explicit waits, Maven, screenshots.'
license: 'Complete terms in LICENSE.txt'

Web Application Testing with Selenium WebDriver

This skill provides patterns and best practices for browser-based test automation using Selenium WebDriver within a Java/Maven environment.

> **Activation:** This skill is triggered when you need to create Selenium tests, debug browser automation, implement Page Objects, or set up Java test infrastructure.

When to Use This Skill

  • Create Selenium WebDriver tests with JUnit 5
  • Implement Page Object Model (POM) architecture
  • Handle synchronization with Explicit Waits
  • Verify UI behavior with AssertJ assertions
  • Debug failing browser tests or DOM interactions
  • Set up Maven test infrastructure for a new project
  • Capture screenshots for debugging
  • Validate complex user flows and form submissions
  • Test across multiple browsers (Chrome, Firefox, Edge)

Do NOT Use For

  • Playwright/TypeScript UI tests (use `playwright-e2e-testing`).
  • Driving a live browser interactively for exploration (use `playwright-cli`).
  • Standalone API/contract testing (use `api-testing`).
  • Governing a regression suite's CI tiers and sharding (use `playwright-regression-testing`).

Prerequisites

| Component | Requirement | | --------- | ------------------------------ | | Java JDK | 11 or higher (17+ recommended) | | Maven | 3.6 or higher | | Browser | Chrome, Firefox, or Edge |

> **Note:** Selenium Manager (included in Selenium 4.6+) automatically handles browser driver binaries.

---

Core Patterns

Page Object Model

Separate page interaction logic from test code:

src/
├── main/java/
│   └── com/example/
│       ├── pages/          # Page Object classes
│       │   └── LoginPage.java
│       ├── components/      # Reusable UI components
│       ├── factories/       # WebDriver factory
│       ├── utils/          # Utilities
│       └── base/           # Base classes
└── test/java/
    └── com/example/
        └── tests/          # Test classes
            └── LoginTest.java

Explicit Waits

Always use explicit waits over `Thread.sleep()`:

WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
WebElement element = wait.until(
    ExpectedConditions.visibilityOfElementLocated(By.id("element-id"))
);

Fluent Assertions (AssertJ)

import static org.assertj.core.api.Assertions.assertThat;

assertThat(driver.getTitle())
    .contains("Expected Title");

assertThat(errorMessage.isDisplayed())
    .as("Error message should be visible")
    .isTrue();

---

Step-by-Step Workflows

Workflow 1: Create New Selenium Test

1. **Analyze requirements**

  • Identify the user flow to test
  • List elements to interact with
  • Define expected outcomes

2. **Create Page Objects**

  • Create `BasePage` with common methods
  • Create page-specific classes with locators
  • Implement action methods

3. **Implement test class**

  • Extend base test class
  • Use `@DisplayName`, `@Tag` annotations
  • Use assertions for validations

4. **Run tests**

   mvn test -Dtest=YourTest
   mvn test -Dtest=YourTest -Dheadless=true

Workflow 2: Debug Failing Test

1. **Run in non-headless mode**

   mvn test -Dtest=FailingTest -Dheadless=false

2. **Capture screenshot on failure**

   ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);

3. **Check browser console logs**

   driver.manage().logs().get(LogType.BROWSER);

4. **Verify locator in browser DevTools**

   document.querySelector('[data-testid="element"]');

5. **Adjust wait conditions** - increase timeout or change ExpectedCondition

Workflow 3: Set Up New Project

1. **Use the included setup script**

   # Run from skills/webapp-selenium-testing/scripts/
   .\setup-maven-project.ps1 -ProjectName "my-tests"

2. **Or use the pom-template.xml**

  • Copy `scripts/pom-template.xml` to your project as `pom.xml`
  • Versions are managed via BOM (Bill of Materials)

3. **Create base classes**

  • `WebDriverFactory` - creates and manages WebDriver instances
  • `BasePage` - common page interaction methods
  • `BaseTest` - setup/teardown logic

---

Best Practices Checklist

  • **Never use `Thread.sleep()`** - Use explicit waits
  • **Implement Page Object Model** - Separate locators from test logic
  • **Use assertions properly** - AssertJ for fluent syntax
  • **Prefer stable locators** - `id`, `data-testid`, semantic CSS
  • **Clean up resources** - Close driver in `@AfterEach`
  • **Keep tests independent** - Each test runs in isolation
  • **Use `@DisplayName`** - Human-readable test descriptions
  • **Capture evidence** - Screenshots on failure
  • **Test only your own application** - Never navigate to third-party or public URLs

---

Security Considerations

> This skill is designed for testing **your own application**. Navigating to third-party or > public websites introduces untrusted content into the AI-assisted session.

  • **Only test against your own app** — Use `localhost` or an internal dev/staging server.

Never hardcode external URLs (e.g. `https://some-third-party.com`) in generated tests; always read the base URL from configuration (`ConfigReader`, env vars, or `config.properties`).

  • **Avoid raw page source ingestion** — `driver.getPageSource()` returns the full HTML of the

current page. In an AI-assisted session that HTML becomes part of the AI context and can carry prompt injection

Read more
@fugazi
Ships withtest-automation-skills-agents

A practical library of agents, instructions, and skills designed specifically for QA Automation Engineers, focusing on production-oriented solutions.

Stars on GitHub

Momentum

stars in total
264
Star history of fugazi/test-automation-skills-agents on GitHub, a chart by star-history.com

More skills from other plugins.

api-review

api-review

Produce the "Playwright 1.xx API Review" artifact for a range of commits - the public API additions and the breaking or behavior…

@microsoft@microsoftInstall Skill
add-e2e-selectors

add-e2e-selectors

Add reliable @grafana/e2e-selectors to interactive elements and key containers in the Grafana frontend. Use when adding e2e…

grafana4d78k
@grafana@grafanaInstall Skill
promptfoo-evals

promptfoo-evals

Write, refine, run, and QA promptfoo evaluation suites: promptfooconfig.yaml, prompts, providers, vars, tests, assertions,…

promptfoo12d27k
@promptfoo@promptfooInstall Skill
deepeval

deepeval

DeepEval evaluation workflow for AI agents and LLM applications. TRIGGER when the user wants to evaluate or improve an AI agent,…

@confident-ai@confident-aiInstall Skill

Questions about webapp-selenium-testing.

Which coding agents can use webapp-selenium-testing?
webapp-selenium-testing installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.