Skip to content

Commit ec747e8

Browse files
authored
Merge pull request #55 from csf-dev/issue-54
Resolves #53 and #54 - Fix issues with Quirks
2 parents d4802cf + e448f92 commit ec747e8

5 files changed

Lines changed: 68 additions & 2 deletions

File tree

CSF.Extensions.WebDriver.Tests/CSF.Extensions.WebDriver.Tests.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232

3333
<ItemGroup>
3434
<Content Include="appsettings.*.json">
35-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
35+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
3636
</Content>
3737
</ItemGroup>
3838

CSF.Extensions.WebDriver.Tests/Factories/WebDriverFactoryIntegrationTests.cs

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,55 @@ public void DriverTypeNorOptionsTypeShouldBeMandatoryIfACustomFactoryTypeIsSpeci
4141
Assert.That(() => driver.WebDriver.GetBrowserId(), Is.Not.Null);
4242
}
4343

44-
IServiceProvider GetServiceProvider(Action<WebDriverCreationOptionsCollection>? configureOptions = null)
44+
[Test]
45+
public void GetWebDriverShouldReturnADriverWithTheCorrectQuirksForChrome()
46+
{
47+
var services = GetServiceProvider(extraRegistrations: services => services.AddWebDriverQuirks(GetCommonBrowserQuirks()));
48+
49+
var driverFactory = services.GetRequiredService<IGetsWebDriver>();
50+
using var driver = driverFactory.GetWebDriver("Chrome");
51+
52+
Assert.Multiple(() =>
53+
{
54+
Assert.That(driver.WebDriver.HasQuirk("IAmChrome"), Is.True, "Chrome quirk");
55+
Assert.That(driver.WebDriver.HasQuirk("IAmFirefox"), Is.False, "Firefox quirk");
56+
});
57+
}
58+
59+
[Test]
60+
public void GetWebDriverShouldReturnADriverWithTheCorrectQuirksForFirefox()
61+
{
62+
var services = GetServiceProvider(extraRegistrations: services => services.AddWebDriverQuirks(GetCommonBrowserQuirks()));
63+
64+
var driverFactory = services.GetRequiredService<IGetsWebDriver>();
65+
using var driver = driverFactory.GetWebDriver("Firefox");
66+
67+
Assert.Multiple(() =>
68+
{
69+
Assert.That(driver.WebDriver.HasQuirk("IAmChrome"), Is.False, "Chrome quirk");
70+
Assert.That(driver.WebDriver.HasQuirk("IAmFirefox"), Is.True, "Firefox quirk");
71+
});
72+
}
73+
74+
Quirks.QuirksData GetCommonBrowserQuirks()
75+
{
76+
return new ()
77+
{
78+
Quirks = new Dictionary<string, Quirks.BrowserInfoCollection>
79+
{
80+
{ "IAmChrome", new () { AffectedBrowsers = new HashSet<Quirks.BrowserInfo>() { new () { Name = "chrome" } } } },
81+
{ "IAmFirefox", new () { AffectedBrowsers = new HashSet<Quirks.BrowserInfo>() { new () { Name = "firefox" } } } },
82+
}
83+
};
84+
}
85+
86+
IServiceProvider GetServiceProvider(Action<WebDriverCreationOptionsCollection>? configureOptions = null,
87+
Action<IServiceCollection>? extraRegistrations = null)
4588
{
4689
var services = new ServiceCollection();
4790
services.AddSingleton(GetConfiguration());
4891
services.AddWebDriverFactory(configureOptions: configureOptions);
92+
extraRegistrations?.Invoke(services);
4993
services.AddLogging();
5094
return services.BuildServiceProvider();
5195
}

CSF.Extensions.WebDriver.Tests/Identification/BrowserInfoMatcherTests.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,14 @@ public void MatchesShouldReturnTrueWhenOnlyTheBrowserNameMatches(BrowserInfoMatc
1313
Assert.That(() => sut.Matches(browserId, browserInfo), Is.True);
1414
}
1515

16+
[Test,AutoMoqData]
17+
public void MatchesShouldUseACaseInsensitiveMatchForBrowserName(BrowserInfoMatcher sut)
18+
{
19+
var browserId = new BrowserId("FOOBROWSER", "BarPlatform", MissingBrowserVersion.Instance);
20+
var browserInfo = new BrowserInfo { Name = "foobrowser" };
21+
Assert.That(() => sut.Matches(browserId, browserInfo), Is.True);
22+
}
23+
1624
[Test,AutoMoqData]
1725
public void MatchesShouldReturnFalseIfTheBrowserNameDoesNotMatch(BrowserInfoMatcher sut)
1826
{

CSF.Extensions.WebDriver.Tests/appsettings.WebDriverFactoryIntegrationTests.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,14 @@
2020
},
2121
"OmittedDriverAndOptionsType": {
2222
"DriverFactoryType": "CSF.Extensions.WebDriver.Factories.WebDriverFactoryIntegrationTests+FakeWebDriverFactory, CSF.Extensions.WebDriver.Tests"
23+
},
24+
"Chrome": {
25+
"DriverType": "ChromeDriver",
26+
"AddBrowserQuirks": "True"
27+
},
28+
"Firefox": {
29+
"DriverType": "FirefoxDriver",
30+
"AddBrowserQuirks": "True"
2331
}
2432
},
2533
"SelectedConfiguration": "DefaultInvalid"

CSF.Extensions.WebDriver/Factories/WebDriverConfigurationItemParser.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@ public WebDriverCreationOptions GetDriverConfiguration(IConfigurationSection con
2626
DriverFactoryType = configuration.GetValue<string>(nameof(WebDriverCreationOptions.DriverFactoryType)),
2727
};
2828

29+
if(configuration.GetSection(nameof(WebDriverCreationOptions.AddBrowserIdentification)).Exists())
30+
creationOptions.AddBrowserIdentification = configuration.GetValue<bool>(nameof(WebDriverCreationOptions.AddBrowserIdentification));
31+
32+
if(configuration.GetSection(nameof(WebDriverCreationOptions.AddBrowserQuirks)).Exists())
33+
creationOptions.AddBrowserQuirks = configuration.GetValue<bool>(nameof(WebDriverCreationOptions.AddBrowserQuirks));
34+
2935
if(!TryGetDriverType(creationOptions, configuration, out var driverType))
3036
return null;
3137

0 commit comments

Comments
 (0)