anchor.diff:  * https://github.com/bonigarcia/selenium-jupiter-examples[Selenium-Jupiter Examples]: Examples using JUnit 5 and <<selenium-jupiter,Selenium-Jupiter>>.
   
   == Advanced Configuration
  -WebDriverManager provides different ways of configuration. First, by using its *Java API*. To that aim, each manager (e.g., `chromedriver()`, `firefoxdriver()`, etc., allows to concatenate different methods of this API to specify custom options or preferences. For example (the explanation of these methods and the other possibilities are explained in the tables at the end of this section):
  +WebDriverManager provides different ways of configuration. First, by using its _Java API_. To that aim, each manager (e.g., `chromedriver()`, `firefoxdriver()`, etc., allows to concatenate different methods of this API to specify custom options or preferences. For example (the explanation of these methods and the other possibilities are explained in the tables at the end of this section):
   
   [source,java]
   ----
  
positive.code: |`avoidOutputTree()`|`wdm.avoidOutputTree=true`|`false` (create output tree in the driver cache, e.g., `chromedriver/linux64/2.37`|Avoid output tree (for instance, in the <<wdm-cli,CLI>> mode)
  |`avoidFallback()`|`wdm.avoidFallback=true`|`false` (use a retries mechanism if any problem happens during the resolution algorithm)|Avoid the fallback mechanism
  |`avoidBrowserDetection()`|`wdm.avoidBrowserDetection` `=true`|`false` (browser version is detected, and the corresponding driver version s discovered)|Force to use the latest version available for a given driver
  |`avoidReadReleaseFromRepository()`|`wdm.avoidReadReleaseFrom` `Repository=true`|`false` (discover driver relase using info from the repository, e.g., https://chromedriver.storage.googleapis.com/LATEST_RELEASE[chromedriver-latest] or https://msedgedriver.azureedge.net/LATEST_STABLE[msedgedriver-latest])|Avoid using the repository info and use the https://github.com/bonigarcia/webdrivermanager/blob/master/src/main/resources/versions.properties[versions database] instead
  |`avoidTmpFolder()`|`wdm.avoidTmpFolder=true`|`false` (Each driver release (typically compressed) is copied in a temporal folder in the local machine, and then the driver is extracted and copied to the driver cache|Avoid using a temporal folder to download drivers (and handle driver release directly on driver cache)
  |`browserVersionDetectionCommand` `(String)`|`wdm.browserVersion` `DetectionCommand`|`""` (automatic discovery using the https://github.com/bonigarcia/webdrivermanager/blob/master/src/main/resources/commands.properties[commands database])|Custom browser version detection command (see example https://github.com/bonigarcia/webdrivermanager/blob/master/src/test/java/io/github/bonigarcia/wdm/test/chrome/ChromeBetaTest.java[here])
  |`browserVersionDetectionRegex` `(String)`|`wdm.browserVersion` `DetectionRegex`|`[\^\\d\^\\.]`|Regular expression used to extract the browser version from the shell
  |`useLocalVersionsPropertiesFirst()`|`wdm.versionsProperties` `OnlineFirst=true`|`false` (the online https://github.com/bonigarcia/webdrivermanager/blob/master/src/main/resources/versions.properties[versions database] is used in the <<resolution-algorithm,resolution algorithm>>)|Use local copy of the versions database
  |`useLocalCommandsPropertiesFirst()`|`wdm.commandsProperties` `OnlineFirst=true`|`false` (the online https://github.com/bonigarcia/webdrivermanager/blob/master/src/main/resources/versions.properties[commands database] is used in the <<resolution-algorithm,resolution algorithm>>)|Use local copy of the commands database
  |`versionsPropertiesUrl(URL)`|`wdm.versionsPropertiesUrl`|Raw version of the online https://github.com/bonigarcia/webdrivermanager/blob/master/src/main/resources/versions.properties[versions database]|Change versions database URL
  |`commandsPropertiesUrl(URL)`|`wdm.commandsPropertiesUrl`|Raw version of the online https://github.com/bonigarcia/webdrivermanager/blob/master/src/main/resources/commands.properties[cmands database]|Change commands database URL
  |`clearDriverCache()`|`wdm.clearDriverCache=true`|`false` (not cleaning driver cache)|Clean driver cache
  
negative.code: == Motivation
  https://seleniumhq.github.io/docs/site/en/webdriver/[Selenium WebDriver] is a library that allows controlling web browsers programmatically. It provides a cross-browser API that can be used to drive web browsers (e.g., Chrome, Edge, or Firefox, among others) using different programming languages (e.g., Java, JavaScript, Python, C#, or Ruby). The primary use of Selenium WebDriver is implementing automated tests for web applications.
  
  Selenium WebDriver carries out the automation using the native support of each browser. For this reason, we need to place a binary file called _driver_ between the test using the Selenium WebDriver API and the browser to be controlled. Examples of drivers for major web browsers nowadays are https://chromedriver.chromium.org/[chromedriver] (for Chrome), https://github.com/mozilla/geckodriver/[geckodriver] (for Firefox), or https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/[msedgedriver] (for Edge). As you can see in the following picture, the communication between the WebDriver API and the driver binary is done using a standard protocol called https://www.w3.org/TR/webdriver/[W3C WebDriver] (formerly the so-called _JSON Wire Protocol_). Then, the communication between the driver and the browser is done using the native capabilities of each browser.
  
  [[webdriver_arch]]
  [.thumb]
  