You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
v3.5.0 — zero-config first run, waiting Locator actions, JUnit 6
This commit was created on GitHub.com and signed with GitHub’s verified signature.
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)