diff --git a/CSF.Extensions.WebDriver.Tests/CSF.Extensions.WebDriver.Tests.csproj b/CSF.Extensions.WebDriver.Tests/CSF.Extensions.WebDriver.Tests.csproj
index b0a818d..3231f5e 100644
--- a/CSF.Extensions.WebDriver.Tests/CSF.Extensions.WebDriver.Tests.csproj
+++ b/CSF.Extensions.WebDriver.Tests/CSF.Extensions.WebDriver.Tests.csproj
@@ -32,7 +32,7 @@
- PreserveNewest
+ Always
diff --git a/CSF.Extensions.WebDriver.Tests/Factories/WebDriverFactoryIntegrationTests.cs b/CSF.Extensions.WebDriver.Tests/Factories/WebDriverFactoryIntegrationTests.cs
index 59a8ebf..78a4402 100644
--- a/CSF.Extensions.WebDriver.Tests/Factories/WebDriverFactoryIntegrationTests.cs
+++ b/CSF.Extensions.WebDriver.Tests/Factories/WebDriverFactoryIntegrationTests.cs
@@ -41,11 +41,55 @@ public void DriverTypeNorOptionsTypeShouldBeMandatoryIfACustomFactoryTypeIsSpeci
Assert.That(() => driver.WebDriver.GetBrowserId(), Is.Not.Null);
}
- IServiceProvider GetServiceProvider(Action? configureOptions = null)
+ [Test]
+ public void GetWebDriverShouldReturnADriverWithTheCorrectQuirksForChrome()
+ {
+ var services = GetServiceProvider(extraRegistrations: services => services.AddWebDriverQuirks(GetCommonBrowserQuirks()));
+
+ var driverFactory = services.GetRequiredService();
+ using var driver = driverFactory.GetWebDriver("Chrome");
+
+ Assert.Multiple(() =>
+ {
+ Assert.That(driver.WebDriver.HasQuirk("IAmChrome"), Is.True, "Chrome quirk");
+ Assert.That(driver.WebDriver.HasQuirk("IAmFirefox"), Is.False, "Firefox quirk");
+ });
+ }
+
+ [Test]
+ public void GetWebDriverShouldReturnADriverWithTheCorrectQuirksForFirefox()
+ {
+ var services = GetServiceProvider(extraRegistrations: services => services.AddWebDriverQuirks(GetCommonBrowserQuirks()));
+
+ var driverFactory = services.GetRequiredService();
+ using var driver = driverFactory.GetWebDriver("Firefox");
+
+ Assert.Multiple(() =>
+ {
+ Assert.That(driver.WebDriver.HasQuirk("IAmChrome"), Is.False, "Chrome quirk");
+ Assert.That(driver.WebDriver.HasQuirk("IAmFirefox"), Is.True, "Firefox quirk");
+ });
+ }
+
+ Quirks.QuirksData GetCommonBrowserQuirks()
+ {
+ return new ()
+ {
+ Quirks = new Dictionary
+ {
+ { "IAmChrome", new () { AffectedBrowsers = new HashSet() { new () { Name = "chrome" } } } },
+ { "IAmFirefox", new () { AffectedBrowsers = new HashSet() { new () { Name = "firefox" } } } },
+ }
+ };
+ }
+
+ IServiceProvider GetServiceProvider(Action? configureOptions = null,
+ Action? extraRegistrations = null)
{
var services = new ServiceCollection();
services.AddSingleton(GetConfiguration());
services.AddWebDriverFactory(configureOptions: configureOptions);
+ extraRegistrations?.Invoke(services);
services.AddLogging();
return services.BuildServiceProvider();
}
diff --git a/CSF.Extensions.WebDriver.Tests/Identification/BrowserInfoMatcherTests.cs b/CSF.Extensions.WebDriver.Tests/Identification/BrowserInfoMatcherTests.cs
index 7f7ffb5..986ba5a 100644
--- a/CSF.Extensions.WebDriver.Tests/Identification/BrowserInfoMatcherTests.cs
+++ b/CSF.Extensions.WebDriver.Tests/Identification/BrowserInfoMatcherTests.cs
@@ -13,6 +13,14 @@ public void MatchesShouldReturnTrueWhenOnlyTheBrowserNameMatches(BrowserInfoMatc
Assert.That(() => sut.Matches(browserId, browserInfo), Is.True);
}
+ [Test,AutoMoqData]
+ public void MatchesShouldUseACaseInsensitiveMatchForBrowserName(BrowserInfoMatcher sut)
+ {
+ var browserId = new BrowserId("FOOBROWSER", "BarPlatform", MissingBrowserVersion.Instance);
+ var browserInfo = new BrowserInfo { Name = "foobrowser" };
+ Assert.That(() => sut.Matches(browserId, browserInfo), Is.True);
+ }
+
[Test,AutoMoqData]
public void MatchesShouldReturnFalseIfTheBrowserNameDoesNotMatch(BrowserInfoMatcher sut)
{
diff --git a/CSF.Extensions.WebDriver.Tests/appsettings.WebDriverFactoryIntegrationTests.json b/CSF.Extensions.WebDriver.Tests/appsettings.WebDriverFactoryIntegrationTests.json
index a3aeab2..34e6f90 100644
--- a/CSF.Extensions.WebDriver.Tests/appsettings.WebDriverFactoryIntegrationTests.json
+++ b/CSF.Extensions.WebDriver.Tests/appsettings.WebDriverFactoryIntegrationTests.json
@@ -20,6 +20,14 @@
},
"OmittedDriverAndOptionsType": {
"DriverFactoryType": "CSF.Extensions.WebDriver.Factories.WebDriverFactoryIntegrationTests+FakeWebDriverFactory, CSF.Extensions.WebDriver.Tests"
+ },
+ "Chrome": {
+ "DriverType": "ChromeDriver",
+ "AddBrowserQuirks": "True"
+ },
+ "Firefox": {
+ "DriverType": "FirefoxDriver",
+ "AddBrowserQuirks": "True"
}
},
"SelectedConfiguration": "DefaultInvalid"
diff --git a/CSF.Extensions.WebDriver/Factories/WebDriverConfigurationItemParser.cs b/CSF.Extensions.WebDriver/Factories/WebDriverConfigurationItemParser.cs
index f80ccde..2d01a0e 100644
--- a/CSF.Extensions.WebDriver/Factories/WebDriverConfigurationItemParser.cs
+++ b/CSF.Extensions.WebDriver/Factories/WebDriverConfigurationItemParser.cs
@@ -26,6 +26,12 @@ public WebDriverCreationOptions GetDriverConfiguration(IConfigurationSection con
DriverFactoryType = configuration.GetValue(nameof(WebDriverCreationOptions.DriverFactoryType)),
};
+ if(configuration.GetSection(nameof(WebDriverCreationOptions.AddBrowserIdentification)).Exists())
+ creationOptions.AddBrowserIdentification = configuration.GetValue(nameof(WebDriverCreationOptions.AddBrowserIdentification));
+
+ if(configuration.GetSection(nameof(WebDriverCreationOptions.AddBrowserQuirks)).Exists())
+ creationOptions.AddBrowserQuirks = configuration.GetValue(nameof(WebDriverCreationOptions.AddBrowserQuirks));
+
if(!TryGetDriverType(creationOptions, configuration, out var driverType))
return null;