Skip to content

v3.5.0 — zero-config first run, waiting Locator actions, JUnit 6

Choose a tag to compare

@shossain786 shossain786 released this 24 Sep 01:42
· 54 commits to master since this release
d09372a
  • Zero-config first run: selenium-boot.yml is now optional — with no default selenium-boot.yml in the working directory or on the classpath, the framework runs on built-in defaults (browser.name: chrome, execution.mode: local, timeouts.explicit: 10, timeouts.pageLoad: 30) and prints one [Selenium Boot] No selenium-boot.yml found — running with built-in defaults ... notice line. Fields a file omits (and an empty file) fall back to the same defaults; browser.name is only defaulted when browser.matrix is not set, and SeleniumBootDefaults overrides still take precedence over the built-ins. Nothing that was an error before stops being one: a requested profile (-Dselenium.boot.profile) or explicit path (-Dselenium.boot.config) whose file is missing still throws, so a typo never silently runs on defaults, and present-but-invalid values (an unknown execution.mode, a negative timeout) still fail validation. Adds ConfigurationLoader.load(File, ClassLoader) (working directory and classpath supplied, for tests). (#66)
  • Terminal Locator actions wait for the element and re-resolve it on every poll — click(), type(), append(), getText(), getAttribute(), hover(), scrollIntoView(), jsClick() and element() used to look the element up once and act on that cached reference, so a page that re-rendered it in between surfaced as a StaleElementReferenceException, and a locator that matched nothing yet threw immediately. They now resolve the locator from scratch on each poll, retrying on a stale or not-yet-present element until timeouts.explicit elapses. Behavior change: a locator that matches nothing is now retried for up to timeouts.explicit instead of failing at once. If it never matches, the call still ends in a LocatorException (cause: TimeoutException), so existing catches keep working; an element that exists but never becomes visible/clickable still times out with a TimeoutException, as before. isVisible(), isHidden(), isEnabled() and count() still never wait, and rows() inherits the wait for its table through element(). (#67, #68)
  • JUnit Jupiter API bumped 5.10.2 → 6.1.3 (junit-jupiter-api, optional dependency of the JUnit 5 bridge). junit-platform-launcher is now bumped to match (6.1.3, was 1.10.2), closing the pairing gap left by #64. Verified both directions against the consumer integration suite (11/11 real-browser JUnit 5 tests): a consumer still on JUnit 5.10.2 + launcher 1.10.2 keeps working unchanged, and a consumer on JUnit 6 (jupiter 6.1.3 + launcher 6.1.3) now works too. (#64)
  • Clearer error when execution.baseUrl is unset — open() and open(String) now throw execution.baseUrl is not set — add it to selenium-boot.yml, or navigate with getDriver().get(url) instead of baseURL is null or empty. Message only; still an IllegalStateException. The getting-started guide now says Step 3 needs the Step 2 file, since zero-config has no default baseUrl. (#77)