Skip to content

Only download chrome driver #18676

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Feb 1, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/Components/test/E2ETest/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
"private": true,
"scripts": {
"selenium-standalone": "selenium-standalone",
"prepare": "selenium-standalone install"
"prepare": "selenium-standalone install --config ../../../Shared/E2ETesting/selenium-config.json"
},
"author": "",
"license": "Apache-2.0",
"dependencies": {
"selenium-standalone": "^6.15.4"
"selenium-standalone": "^6.17.0"
}
}
8 changes: 4 additions & 4 deletions src/Components/test/E2ETest/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -432,10 +432,10 @@ safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==

selenium-standalone@^6.15.4:
version "6.16.0"
resolved "https://registry.yarnpkg.com/selenium-standalone/-/selenium-standalone-6.16.0.tgz#ffcf02665c58ff7a7472427ae819ba79c15967ac"
integrity sha512-tl7HFH2FOxJD1is7Pzzsl0pY4vuePSdSWiJdPn+6ETBkpeJDiuzou8hBjvWYWpD+eIVcOrmy3L0R3GzkdHLzDw==
selenium-standalone@^6.17.0:
version "6.17.0"
resolved "https://registry.yarnpkg.com/selenium-standalone/-/selenium-standalone-6.17.0.tgz#0f24b691836205ee9bc3d7a6f207ebcb28170cd9"
integrity sha512-5PSnDHwMiq+OCiAGlhwQ8BM9xuwFfvBOZ7Tfbw+ifkTnOy0PWbZmI1B9gPGuyGHpbQ/3J3CzIK7BYwrQ7EjtWQ==
dependencies:
async "^2.6.2"
commander "^2.19.0"
Expand Down
4 changes: 2 additions & 2 deletions src/ProjectTemplates/test/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
"private": true,
"scripts": {
"selenium-standalone": "selenium-standalone",
"prepare": "selenium-standalone install"
"prepare": "selenium-standalone install --config ../../Shared/E2ETesting/selenium-config.json"
},
"author": "",
"license": "Apache-2.0",
"dependencies": {
"selenium-standalone": "^6.15.4"
"selenium-standalone": "^6.17.0"
}
}
9 changes: 6 additions & 3 deletions src/Shared/E2ETesting/E2ETesting.props
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
<SeleniumProcessTrackingFolder Condition="'$(SeleniumProcessTrackingFolder)' == ''">$([MSBuild]::EnsureTrailingSlash('$(RepoRoot)'))artifacts\tmp\selenium\</SeleniumProcessTrackingFolder>
<SeleniumE2ETestsSupported Condition="'$(SeleniumE2ETestsSupported)' == '' and '$(TargetArchitecture)' != 'arm' and '$(OS)' == 'Windows_NT'">true</SeleniumE2ETestsSupported>

<!-- Config that limits driver to chrome-->
<SeleniumConfigPath>$([MSBuild]::NormalizePath($(MSBuildThisFileDirectory)selenium-config.json))</SeleniumConfigPath>

<!-- We want to enforce prerequisites when we build from the CI or within Visual Studio -->
<EnforcedE2EBuildEnvironment Condition="'$(ContinuousIntegrationBuild)' == 'true' or '$(BuildingInsideVisualStudio)' == 'true'">true</EnforcedE2EBuildEnvironment>

Expand Down Expand Up @@ -39,12 +42,12 @@
<ItemGroup>
<AssemblyAttribute Include="System.Reflection.AssemblyMetadataAttribute">
<_Parameter1>Microsoft.AspNetCore.E2ETesting.CI</_Parameter1>
<_Parameter2>$(ContinuousIntegrationBuild)</_Parameter2>
<_Parameter2>$(ContinuousIntegrationBuild)</_Parameter2>
</AssemblyAttribute>

<AssemblyAttribute Include="System.Reflection.AssemblyMetadataAttribute">
<_Parameter1>Microsoft.AspNetCore.E2ETesting.ScreenshotsPath</_Parameter1>
<_Parameter2>$(SeleniumScreenShotsFolderPath)</_Parameter2>
<_Parameter2>$(SeleniumScreenShotsFolderPath)</_Parameter2>
</AssemblyAttribute>

</ItemGroup>
Expand Down
8 changes: 7 additions & 1 deletion src/Shared/E2ETesting/E2ETesting.targets
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@

<PropertyGroup>
<_PackageJsonLinesContent>@(_PackageJsonLines)</_PackageJsonLinesContent>
<_PackageJsonSeleniumPackage>&quot;selenium-standalone&quot;: &quot;^6.15.4&quot;</_PackageJsonSeleniumPackage>
<_PackageJsonSeleniumPackage>&quot;selenium-standalone&quot;: &quot;^6.17.0&quot;</_PackageJsonSeleniumPackage>
</PropertyGroup>

<Error
Expand Down Expand Up @@ -109,6 +109,12 @@
<_Parameter1>Microsoft.AspNetCore.Testing.Selenium.Supported</_Parameter1>
<_Parameter2>$(_SeleniumE2ETestsSupportedAttributeValue)</_Parameter2>
</AssemblyAttribute>

<AssemblyAttribute
Include="System.Reflection.AssemblyMetadataAttribute">
<_Parameter1>Microsoft.AspNetCore.Testing.SeleniumConfigPath</_Parameter1>
<_Parameter2>$(SeleniumConfigPath)</_Parameter2>
</AssemblyAttribute>
</ItemGroup>
</Target>

Expand Down
12 changes: 11 additions & 1 deletion src/Shared/E2ETesting/SeleniumStandaloneServer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -86,10 +86,20 @@ private static async Task InitializeInstance(ITestOutputHelper output)
var port = FindAvailablePort();
var uri = new UriBuilder("http", "localhost", port, "/wd/hub").Uri;

var seleniumConfigPath = typeof(SeleniumStandaloneServer).Assembly
.GetCustomAttributes<AssemblyMetadataAttribute>()
.FirstOrDefault(k => k.Key == "Microsoft.AspNetCore.Testing.SeleniumConfigPath")
?.Value;

if (seleniumConfigPath == null)
{
throw new InvalidOperationException("Selenium config path not configured. Does this project import the E2ETesting.targets?");
}

var psi = new ProcessStartInfo
{
FileName = "npm",
Arguments = $"run selenium-standalone start -- -- -port {port}",
Arguments = $"run selenium-standalone start -- --config \"{seleniumConfigPath}\" -- -port {port}",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we're hardcoding the seleniumConfigPath into package.json anyway, why go to all this trouble to pass it dynamically here? Would it be simpler to modify the selenium-standalone script in package.json so that it also hardcodes the config path? Then we wouldn't need to pass it from here, and therefore wouldn't need the AssemblyMetadataAttribute, and wouldn't need the change to E2ETesting.props, etc.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the issue is that knowing the relative path inside of a test is a bit tricky. Using relative paths can mess up depending on how the test is launched and it's not always correct to assume PWD is the test directory. In other places where we need to find something relative, we do something quite similar - have the build tell us where things are.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, sounds like a good reason!

RedirectStandardOutput = true,
RedirectStandardError = true,
};
Expand Down
6 changes: 6 additions & 0 deletions src/Shared/E2ETesting/selenium-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"drivers": {
"chrome": {}
},
"ignoreExtraDrivers": true
}