For (local) firefox webdrivers, simply use driver.installExtension
as mentioned in the docs.
As for remote firefox webdrivers (or Selenium Grid), use Augmenter
as mentioned in this issue.
The following is an example of Augmenter
provided in this webpage with MIT license:
driver.setFileDetector(new LocalFileDetector());
WebDriver augmentedDriver = new Augmenter().augment(driver);
String id = ((HasExtensions) augmentedDriver).installExtension(Paths.get("src/test/resources/ninja_saucebot-1.0-an+fx.xpi"));
driver.get("https://www.saucedemo.com");
Assertions.assertTrue(driver.findElements(By.className("bot_column2")).size() > 0);
((HasExtensions) augmentedDriver).uninstallExtension(id);
driver.navigate().refresh();
Assertions.assertEquals(0, driver.findElements(By.className("bot_column2")).size());