Tags: seleniumboot/selenium-boot
Tags
fix: per-engine report output dir to prevent overwrites (v3.1.1) When a TestNG suite (Surefire) and JUnit 5 tests (Failsafe) run in one build, both wrote the metrics JSON + HTML report to target/, so the second engine silently overwrote the first — the published report showed only the last engine's tests (e.g. 11 JUnit5 instead of the full TestNG suite). - New ReportPaths helper resolves the metrics JSON, HTML report, and metrics history under a base dir that honors -Dseleniumboot.reports.dir (the switch already used by JUnitXmlReporter), defaulting to target/. - Wire it through ExecutionMetrics, HtmlReportGenerator, ReportAdapterRegistry, and FlakinessAnalyzer. - Point one engine's run at its own dir (e.g. target/junit5) and each gets a self-contained report. 8 new ReportPaths unit tests; full suite 470 green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
feat: accessibility-first locators (getByRole/getByText/getByLabel/…)… … (v3.1.0) Add Playwright-style semantic locators that target the accessibility tree instead of brittle CSS/DOM structure, so tests survive redesigns. - New Role enum (38 WAI-ARIA roles; implicit HTML + explicit role= mapping) - Locator.byRole/byText/byLabel/byPlaceholder/byTestId/byAltText/byTitle with .withName/.withLevel/.exact refinements and a toBy() escape hatch - Exposed as getBy*() on BaseTest and BasePage; flows through the existing auto-wait Locator chain (no Thread.sleep, no explicit waits) - Case-insensitive substring by default, exact opt-in via .exact() - Accessible-name computation follows ARIA precedence (aria-label → aria-labelledby → <label> → text → value/alt/title) - Configurable test-id attribute (locators.testIdAttribute, default data-testid) - 20 new unit tests; full suite green Docs: extract version history from README into CHANGELOG.md (README 933→671 lines), add semantic-locators guide, bump all version snippets to 3.1.0, update CLAUDE.md version-bump table. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
feat: add TestRail + Xray integration (v3.0.0)
Annotate tests with @TestRailCase("C1234") and/or @Xraytest("PROJ-123")
to push results automatically — no extra code in test methods required.
Both annotations support arrays for multiple IDs and work at method or
class level in TestNG and JUnit 5.
TestRail creates a named run at suite start and pushes per-test results
immediately via Basic-auth REST v2. Xray supports Cloud (OAuth2) and
Server/DC (Basic) and batch-imports results at suite end. All HTTP calls
use java.net.http.HttpClient — no new dependencies added.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Phase 19 — Email Verification (v2.0.0) Four backends: Mailhog (HTTP API), Mailtrap (v1 REST), Outlook/Office 365 (Microsoft Graph API — app-only OAuth2, token cached), IMAP (jakarta.mail optional dep — Gmail, Yahoo, any standards-compliant server). Core API: - MailboxClient: waitForEmail(criteria), clear() - EmailCriteria: to(addr), any().subject(text), .containing(text), .timeout(s) - Email: assertSubject(), assertBodyContains(), extractLink(linkText) Wired into BaseTest + BaseJUnit5Test as mailbox() and to() helpers. autoClear: true in config clears inbox before each test automatically. 22 new unit tests in MailboxClientTest (314 total, all passing). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Phase 20 — @retryable for JUnit 5 + Cucumber (v1.11.0) - SeleniumBootExtension: InvocationInterceptor retries test methods with full driver recreation between attempts; WebDriver args re-resolved to new driver on retry - CucumberHooks: detect retry via testId presence in ExecutionMetrics, record retry count for HTML report badge - @retryable: add maxAttempts attribute + TYPE target; backward-compatible - RetryListener: respect maxAttempts from annotation when specified - Version bumped to 1.11.0; changelog + README updated Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Phase 19 — JUnit 5 support (v1.10.0) - SeleniumBootExtension: full AfterEachCallback lifecycle (screenshot, error, AI analysis, trace, recording), ParameterResolver for WebDriver injection, AfterAllCallback for per-suite driver cleanup - BaseJUnit5Test: add getWait(), $(), assertThat(), step() overloads - SeleniumBootLauncherListener: suite-level HTML report via JUnit Platform TestExecutionListener registered through ServiceLoader - junit-platform-launcher:1.10.2 added as optional dependency - Docs site: junit5.md rewritten from placeholder to live docs; JUnit 5 and Cucumber feature cards added to homepage; version bumped to 1.10.0 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Phase 18 — BDD/Cucumber integration (v1.9.0) - Add com.seleniumboot.cucumber package: BaseCucumberTest, BaseCucumberSteps, CucumberHooks, CucumberStepLogger, CucumberContext - TestExecutionListener: skip onTest* for Cucumber runner tests - ExecutionHook.onTestEnd javadoc corrected (fires before driver quit) - cucumber-java + cucumber-testng declared as optional dependencies - Version bumped to 1.9.0 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
PreviousNext