Skip to content
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
65 changes: 65 additions & 0 deletions .github/workflows/bump-chrome-version.yml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
name: Update Chrome Version used for wasm testing

permissions:
contents: write
pull-requests: write

on:
schedule:
- cron: '0 0 * * 0'

workflow_dispatch:

jobs:
update:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Branch
run: |
git config user.name github-actions[bot]
git config user.email github-actions[bot]@users.noreply.github.com
git checkout -b update-chrome-version-${{ github.run_id }}

- name: Run UpdateToLatestVersion
run: >-
make -C src/mono/wasm build-tasks &&
.dotnet/dotnet build eng/testing/bump-chrome-version.proj -p:Configuration=Release &&
git add eng/testing/ChromeVersions.props

- name: Check for changes
id: check_changes
run: |
echo "has_changes=$(git diff-index --quiet HEAD && echo false || echo true)" >> $GITHUB_OUTPUT

- name: Commit Update
run: |
echo steps.check_changes.outputs.has_changes=${{steps.check_changes.outputs.has_changes}}
if ${{steps.check_changes.outputs.has_changes}} == 'true'; then
git commit -m "Automated bump of chrome version"
git push --set-upstream origin update-chrome-version-${{ github.run_id }}
else
echo "No changes detected."
fi

- name: Create PR
if: steps.check_changes.outputs.has_changes == 'true'
uses: actions/github-script@v6
with:
script: |
const { data: pullRequest } = await github.rest.pulls.create({
base: context.ref,
head: "update-chrome-version-${{ github.run_id }}",
owner: context.repo.owner,
repo: context.repo.repo,
title: '[wasm] Bump chrome version used for testing',
body: ''
});
await github.rest.pulls.requestReviewers({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: pullRequest.number,
reviewers: ["radical"]
});
return pullRequest.number;
6 changes: 3 additions & 3 deletions eng/pipelines/common/evaluate-default-paths.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,7 +6,7 @@ parameters:
# do not set them when using the template
_const_paths:
_wasm_specific_only: [
eng/testing/ProvisioningVersions.props
eng/testing/ChromeVersions.props
eng/testing/WasmRunner*
eng/testing/WasiRunner*
eng/testing/scenarios/BuildWasmAppsJobsList.txt
Expand DownExpand Up@@ -182,7 +182,7 @@ jobs:
include:
- eng/Version.Details.xml
- eng/Versions.props
eng/testing/ProvisioningVersions.props
eng/testing/ChromeVersions.props
- eng/testing/scenarios/BuildWasmAppsJobsList.txt
- eng/testing/workloads-testing.targets
- src/installer/pkg/sfx/Microsoft.NETCore.App/*
Expand DownExpand Up@@ -215,7 +215,7 @@ jobs:
- subset: wasmdebuggertests
combined: true
include:
- eng/testing/ProvisioningVersions.props
- eng/testing/ChromeVersions.props
- src/libraries/System.Runtime.InteropServices/*
- src/libraries/System.Runtime.InteropServices.JavaScript/*
- src/mono/mono/*
Expand Down
11 changes: 11 additions & 0 deletions eng/testing/ChromeVersions.props
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
<Project>
<PropertyGroup>
<linux_ChromeVersion>115.0.5790.170</linux_ChromeVersion>
<linux_ChromeRevision>1148114</linux_ChromeRevision>
<linux_ChromeBaseSnapshotUrl>https://storage.googleapis.com/chromium-browser-snapshots/Linux_x64/1148123</linux_ChromeBaseSnapshotUrl>

<win_ChromeVersion>115.0.5790.171</win_ChromeVersion>
<win_ChromeRevision>1148114</win_ChromeRevision>
<win_ChromeBaseSnapshotUrl>https://storage.googleapis.com/chromium-browser-snapshots/Win_x64/1148119</win_ChromeBaseSnapshotUrl>
</PropertyGroup>
</Project>
68 changes: 0 additions & 68 deletions eng/testing/ProvisioningVersions.props

This file was deleted.

52 changes: 52 additions & 0 deletions eng/testing/bump-chrome-version.proj
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
<Project DefaultTargets="UpdateChromeVersion">

<Import Project="..\Directory.Build.props" />
<UsingTask AssemblyFile="$(WasmBuildTasksAssemblyPath)" TaskName="Microsoft.WebAssembly.Build.Tasks.GetChromeVersions" />

<Target Name="UpdateChromeVersion">
<GetChromeVersions
OSIdentifier="linux"
OSPrefix="Linux_x64"
Channel="$(ChromeChannel)"
MaxMajorVersionsToCheck="1"
IntermediateOutputPath="$(ArtifactsObjDir)">
<Output TaskParameter="ChromeVersion" PropertyName="linux_ChromeVersion" />
<Output TaskParameter="V8Version" PropertyName="linux_V8Version" />
<Output TaskParameter="BranchPosition" PropertyName="linux_ChromeRevision" />
<Output TaskParameter="BaseSnapshotUrl" PropertyName="linux_ChromeBaseSnapshotUrl" />
</GetChromeVersions>

<GetChromeVersions
OSIdentifier="win"
OSPrefix="Win_x64"
Channel="$(ChromeChannel)"
MaxMajorVersionsToCheck="1"
IntermediateOutputPath="$(ArtifactsObjDir)">
<Output TaskParameter="ChromeVersion" PropertyName="win_ChromeVersion" />
<Output TaskParameter="V8Version" PropertyName="win_V8Version" />
<Output TaskParameter="BranchPosition" PropertyName="win_ChromeRevision" />
<Output TaskParameter="BaseSnapshotUrl" PropertyName="win_ChromeBaseSnapshotUrl" />
</GetChromeVersions>

<PropertyGroup>
<_PropsContent>
&lt;Project&gt;
&lt;PropertyGroup&gt;
&lt;linux_ChromeVersion&gt;$(linux_ChromeVersion)&lt;/linux_ChromeVersion&gt;
&lt;linux_ChromeRevision&gt;$(linux_ChromeRevision)&lt;/linux_ChromeRevision&gt;
&lt;linux_ChromeBaseSnapshotUrl&gt;$(linux_ChromeBaseSnapshotUrl)&lt;/linux_ChromeBaseSnapshotUrl&gt;

&lt;win_ChromeVersion&gt;$(win_ChromeVersion)&lt;/win_ChromeVersion&gt;
&lt;win_ChromeRevision&gt;$(win_ChromeRevision)&lt;/win_ChromeRevision&gt;
&lt;win_ChromeBaseSnapshotUrl&gt;$(win_ChromeBaseSnapshotUrl)&lt;/win_ChromeBaseSnapshotUrl&gt;
&lt;/PropertyGroup&gt;
&lt;/Project&gt;
</_PropsContent>
</PropertyGroup>
<Message Text="Writing version props: $(_PropsContent)" Importance="High" />
<WriteLinesToFile Lines="$(_PropsContent)" File="$(RepositoryEngineeringDir)testing\ChromeVersions.props" Overwrite="true" />
</Target>

<Import Project="..\Directory.Build.targets" />

</Project>
95 changes: 59 additions & 36 deletions eng/testing/wasm-provisioning.targets
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,43 @@
<Project>
<Import Project="$(MSBuildThisFileDirectory)ProvisioningVersions.props" />
<PropertyGroup>
<!--
Set ChromeChannel properties to get the latest versions
-->
<ChromeChannel>stable</ChromeChannel>

<ChromeOSIdentifier Condition="$([MSBuild]::IsOSPlatform('windows'))">win</ChromeOSIdentifier>
<ChromeOSIdentifier Condition="$([MSBuild]::IsOSPlatform('linux'))">linux</ChromeOSIdentifier>
<ChromeOSIdentifier Condition="'$(ChromeOSIdentifier)' == ''">unsupported-platform</ChromeOSIdentifier>

<!-- disable by default on unsupported platforms -->
<InstallChromeForTests Condition="'$(InstallChromeForTests)' == '' and '$(ChromeOSIdentifier)' == ''">false</InstallChromeForTests>

<FirefoxDir>$(ArtifactsBinDir)firefox\</FirefoxDir>
<FirefoxStampFile>$([MSBuild]::NormalizePath($(FirefoxDir), '.install-firefox-$(FirefoxRevision).stamp'))</FirefoxStampFile>
<_BrowserStampDir>$(ArtifactsBinDir)\</_BrowserStampDir>
</PropertyGroup>

<Import Project="$(MSBuildThisFileDirectory)ChromeVersions.props" />

<PropertyGroup Condition="'$(BrowserHost)' != 'windows'">
<FirefoxRevision>108.0.1</FirefoxRevision>
<FirefoxUrl>https://ftp.mozilla.org/pub/firefox/releases/$(FirefoxRevision)/linux-x86_64/en-US/firefox-$(FirefoxRevision).tar.bz2</FirefoxUrl>
<FirefoxBinaryName>firefox</FirefoxBinaryName>
</PropertyGroup>

<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'linux'">
<ChromeDirName>chrome-linux</ChromeDirName>
<ChromeDriverDirName>chromedriver_linux64</ChromeDriverDirName>
<ChromeBinaryName>chrome</ChromeBinaryName>
<ChromeDriverBinaryName>chromedriver</ChromeDriverBinaryName>
<_ChromeOSPrefix>Linux_x64</_ChromeOSPrefix>

<ChromeVersion>$(linux_ChromeVersion)</ChromeVersion>
<ChromeRevision>$(linux_ChromeRevision)</ChromeRevision>
<_ChromeBaseSnapshotUrl>$(linux_ChromeBaseSnapshotUrl)</_ChromeBaseSnapshotUrl>

<ChromeUrl>$(linux_ChromeBaseSnapshotUrl)/chrome-linux.zip</ChromeUrl>
<ChromeDriverUrl>$(linux_ChromeBaseSnapshotUrl)/chromedriver_linux64.zip</ChromeDriverUrl>
</PropertyGroup>

<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'win'">
Expand All@@ -15,18 +46,38 @@
<ChromeBinaryName>chrome.exe</ChromeBinaryName>
<ChromeDriverBinaryName>chromedriver.exe</ChromeDriverBinaryName>
<_ChromeOSPrefix>Win_x64</_ChromeOSPrefix>

<ChromeVersion>$(win_ChromeVersion)</ChromeVersion>
<ChromeRevision>$(win_ChromeRevision)</ChromeRevision>
<_ChromeBaseSnapshotUrl>$(win_ChromeBaseSnapshotUrl)</_ChromeBaseSnapshotUrl>

<ChromeUrl>$(win_ChromeBaseSnapshotUrl)/chrome-win.zip</ChromeUrl>
<ChromeDriverUrl>$(win_ChromeBaseSnapshotUrl)/chromedriver_win32.zip</ChromeDriverUrl>
</PropertyGroup>

<PropertyGroup>
<_BrowserStampDir>$(ArtifactsBinDir)\</_BrowserStampDir>
<PropertyGroup Condition="'$(ChromeVersion)' != ''">
<ChromeDir>$(ArtifactsBinDir)chrome\</ChromeDir>
<ChromeDriverDir>$(ArtifactsBinDir)chromedriver\</ChromeDriverDir>
<ChromeStampFile>$([MSBuild]::NormalizePath('$(ChromeDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeStampFile>
<ChromeDriverStampFile>$([MSBuild]::NormalizePath('$(ChromeDriverDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeDriverStampFile>

<ChromeBinaryPath>$([MSBuild]::NormalizePath($(ChromeDir), $(ChromeDirName), $(ChromeBinaryName)))</ChromeBinaryPath>
<ChromeDriverBinaryPath>$([MSBuild]::NormalizePath($(ChromeDriverDir), $(ChromeDriverDirName), $(ChromeDriverBinaryName)))</ChromeDriverBinaryPath>
</PropertyGroup>

<PropertyGroup Condition="'$(BrowserHost)' != 'windows'">
<FirefoxRevision>108.0.1</FirefoxRevision>
<FirefoxUrl>https://ftp.mozilla.org/pub/firefox/releases/$(FirefoxRevision)/linux-x86_64/en-US/firefox-$(FirefoxRevision).tar.bz2</FirefoxUrl>
<FirefoxBinaryName>firefox</FirefoxBinaryName>
</PropertyGroup>

<Target Name="DownloadAndInstallChrome"
AfterTargets="GetChromeVersion"
AfterTargets="Build"
Condition="(!Exists($(ChromeStampFile)) or !Exists($(ChromeBinaryPath))) and '$(InstallChromeForTests)' == 'true'">

<Error Condition="'$(ChromeVersion)' == ''"
Text="No %24(ChromeVersion) set. This can be set in eng/testing/ChromeVersions.props" />

<RemoveDir Directories="$(ChromeDir)" />

<Message Text="** Installing chrome version $(ChromeVersion), rev: $(ChromeRevision). To disable this set the msuild property InstallChromeForTests=false ."
Expand All@@ -46,9 +97,12 @@
</Target>

<Target Name="DownloadAndInstallChromeDriver"
AfterTargets="GetChromeVersion"
AfterTargets="Build"
Condition="(!Exists($(ChromeDriverStampFile)) or !Exists($(ChromeDriverBinaryPath))) and '$(InstallChromeForTests)' == 'true'">

<Error Condition="'$(ChromeVersion)' == ''"
Text="No %24(ChromeVersion) set. This can be set in eng/testing/ChromeVersions.props" />

<RemoveDir Directories="$(ChromeDriverDir)" />

<Message Text="** Installing chromedriver version $(ChromeVersion), rev: $(ChromeRevision). To disable this set the msuild property InstallChromeForTests=false ."
Expand DownExpand Up@@ -94,35 +148,4 @@

<Touch Files="$(FirefoxStampFile)" AlwaysCreate="true" />
</Target>

<UsingTask AssemblyFile="$(WasmBuildTasksAssemblyPath)"
TaskName="Microsoft.WebAssembly.Build.Tasks.GetChromeVersions" />

<Target Name="GetChromeVersion" AfterTargets="Build" Condition="'$(InstallChromeForTests)' == 'true'">
<GetChromeVersions
Condition="'$(ChromeVersion)' == ''"
OSIdentifier="$(ChromeOSIdentifier)"
OSPrefix="$(_ChromeOSPrefix)"
Channel="$(ChromeChannel)"
IntermediateOutputPath="$(ArtifactsObjDir)">
<Output TaskParameter="ChromeVersion" PropertyName="ChromeVersion" />
<Output TaskParameter="V8Version" PropertyName="V8Version" />
<Output TaskParameter="BranchPosition" PropertyName="ChromeRevision" />
<Output TaskParameter="BaseSnapshotUrl" PropertyName="_ChromeBaseSnapshotUrl" />
</GetChromeVersions>

<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'linux'">
<ChromeUrl>$(_ChromeBaseSnapshotUrl)/chrome-linux.zip</ChromeUrl>
<ChromeDriverUrl>$(_ChromeBaseSnapshotUrl)/chromedriver_linux64.zip</ChromeDriverUrl>
</PropertyGroup>
<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'win'">
<ChromeUrl>$(_ChromeBaseSnapshotUrl)/chrome-win.zip</ChromeUrl>
<ChromeDriverUrl>$(_ChromeBaseSnapshotUrl)/chromedriver_win32.zip</ChromeDriverUrl>
</PropertyGroup>

<PropertyGroup>
<ChromeStampFile>$([MSBuild]::NormalizePath('$(ChromeDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeStampFile>
<ChromeDriverStampFile>$([MSBuild]::NormalizePath('$(ChromeDriverDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeDriverStampFile>
</PropertyGroup>
</Target>
</Project>
11 changes: 6 additions & 5 deletions src/tasks/WasmBuildTasks/GetChromeVersions.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -24,10 +24,6 @@ public class GetChromeVersions : MBU.Task
private const string s_depsUrlPrefix = $"https://omahaproxy.appspot.com/deps.json?version=";
private const int s_versionCheckThresholdDays = 1;

// start at the branch position found in all.json, and try to
// download chrome, and chromedriver. If not found, then try up to
// s_numBranchPositionsToTry lower versions
private const int s_numBranchPositionsToTry = 50;
private static readonly HttpClient s_httpClient = new();

public string Channel { get; set; } = "stable";
Expand All@@ -44,6 +40,11 @@ public class GetChromeVersions : MBU.Task

public int MaxMajorVersionsToCheck { get; set; } = 2;

// start at the branch position found in all.json, and try to
// download chrome, and chromedriver. If not found, then try up to
// MaxBranchPositionsToCheck lower versions
public int MaxBranchPositionsToCheck { get; set; } = 75;

[Output]
public string ChromeVersion { get; set; } = string.Empty;
[Output]
Expand DownExpand Up@@ -240,7 +241,7 @@ private async Task<Stream> GetDownloadFileStreamAsync(string filename, string ur
string baseUrl = $"{s_snapshotBaseUrl}/{OSPrefix}";

int branchPosition = int.Parse(version.branch_base_position);
for (int i = 0; i < s_numBranchPositionsToTry; i++)
for (int i = 0; i < MaxBranchPositionsToCheck; i++)
{
string branchUrl = $"{baseUrl}/{branchPosition}";
string url = $"{branchUrl}/REVISIONS";
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
[wasm] Make chrome version bumps for testing explicit, instead of automatic updates to latest by radical · Pull Request #90772 · dotnet/runtime · GitHub
Skip to content
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
65 changes: 65 additions & 0 deletions .github/workflows/bump-chrome-version.yml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
name: Update Chrome Version used for wasm testing

permissions:
contents: write
pull-requests: write

on:
schedule:
- cron: '0 0 * * 0'

workflow_dispatch:

jobs:
update:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Branch
run: |
git config user.name github-actions[bot]
git config user.email github-actions[bot]@users.noreply.github.com
git checkout -b update-chrome-version-${{ github.run_id }}

- name: Run UpdateToLatestVersion
run: >-
make -C src/mono/wasm build-tasks &&
.dotnet/dotnet build eng/testing/bump-chrome-version.proj -p:Configuration=Release &&
git add eng/testing/ChromeVersions.props

- name: Check for changes
id: check_changes
run: |
echo "has_changes=$(git diff-index --quiet HEAD && echo false || echo true)" >> $GITHUB_OUTPUT

- name: Commit Update
run: |
echo steps.check_changes.outputs.has_changes=${{steps.check_changes.outputs.has_changes}}
if ${{steps.check_changes.outputs.has_changes}} == 'true'; then
git commit -m "Automated bump of chrome version"
git push --set-upstream origin update-chrome-version-${{ github.run_id }}
else
echo "No changes detected."
fi

- name: Create PR
if: steps.check_changes.outputs.has_changes == 'true'
uses: actions/github-script@v6
with:
script: |
const { data: pullRequest } = await github.rest.pulls.create({
base: context.ref,
head: "update-chrome-version-${{ github.run_id }}",
owner: context.repo.owner,
repo: context.repo.repo,
title: '[wasm] Bump chrome version used for testing',
body: ''
});
await github.rest.pulls.requestReviewers({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: pullRequest.number,
reviewers: ["radical"]
});
return pullRequest.number;
6 changes: 3 additions & 3 deletions eng/pipelines/common/evaluate-default-paths.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,7 +6,7 @@ parameters:
# do not set them when using the template
_const_paths:
_wasm_specific_only: [
eng/testing/ProvisioningVersions.props
eng/testing/ChromeVersions.props
eng/testing/WasmRunner*
eng/testing/WasiRunner*
eng/testing/scenarios/BuildWasmAppsJobsList.txt
Expand DownExpand Up@@ -182,7 +182,7 @@ jobs:
include:
- eng/Version.Details.xml
- eng/Versions.props
eng/testing/ProvisioningVersions.props
eng/testing/ChromeVersions.props
- eng/testing/scenarios/BuildWasmAppsJobsList.txt
- eng/testing/workloads-testing.targets
- src/installer/pkg/sfx/Microsoft.NETCore.App/*
Expand DownExpand Up@@ -215,7 +215,7 @@ jobs:
- subset: wasmdebuggertests
combined: true
include:
- eng/testing/ProvisioningVersions.props
- eng/testing/ChromeVersions.props
- src/libraries/System.Runtime.InteropServices/*
- src/libraries/System.Runtime.InteropServices.JavaScript/*
- src/mono/mono/*
Expand Down
11 changes: 11 additions & 0 deletions eng/testing/ChromeVersions.props
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
<Project>
<PropertyGroup>
<linux_ChromeVersion>115.0.5790.170</linux_ChromeVersion>
<linux_ChromeRevision>1148114</linux_ChromeRevision>
<linux_ChromeBaseSnapshotUrl>https://storage.googleapis.com/chromium-browser-snapshots/Linux_x64/1148123</linux_ChromeBaseSnapshotUrl>

<win_ChromeVersion>115.0.5790.171</win_ChromeVersion>
<win_ChromeRevision>1148114</win_ChromeRevision>
<win_ChromeBaseSnapshotUrl>https://storage.googleapis.com/chromium-browser-snapshots/Win_x64/1148119</win_ChromeBaseSnapshotUrl>
</PropertyGroup>
</Project>
68 changes: 0 additions & 68 deletions eng/testing/ProvisioningVersions.props

This file was deleted.

52 changes: 52 additions & 0 deletions eng/testing/bump-chrome-version.proj
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
<Project DefaultTargets="UpdateChromeVersion">

<Import Project="..\Directory.Build.props" />
<UsingTask AssemblyFile="$(WasmBuildTasksAssemblyPath)" TaskName="Microsoft.WebAssembly.Build.Tasks.GetChromeVersions" />

<Target Name="UpdateChromeVersion">
<GetChromeVersions
OSIdentifier="linux"
OSPrefix="Linux_x64"
Channel="$(ChromeChannel)"
MaxMajorVersionsToCheck="1"
IntermediateOutputPath="$(ArtifactsObjDir)">
<Output TaskParameter="ChromeVersion" PropertyName="linux_ChromeVersion" />
<Output TaskParameter="V8Version" PropertyName="linux_V8Version" />
<Output TaskParameter="BranchPosition" PropertyName="linux_ChromeRevision" />
<Output TaskParameter="BaseSnapshotUrl" PropertyName="linux_ChromeBaseSnapshotUrl" />
</GetChromeVersions>

<GetChromeVersions
OSIdentifier="win"
OSPrefix="Win_x64"
Channel="$(ChromeChannel)"
MaxMajorVersionsToCheck="1"
IntermediateOutputPath="$(ArtifactsObjDir)">
<Output TaskParameter="ChromeVersion" PropertyName="win_ChromeVersion" />
<Output TaskParameter="V8Version" PropertyName="win_V8Version" />
<Output TaskParameter="BranchPosition" PropertyName="win_ChromeRevision" />
<Output TaskParameter="BaseSnapshotUrl" PropertyName="win_ChromeBaseSnapshotUrl" />
</GetChromeVersions>

<PropertyGroup>
<_PropsContent>
&lt;Project&gt;
&lt;PropertyGroup&gt;
&lt;linux_ChromeVersion&gt;$(linux_ChromeVersion)&lt;/linux_ChromeVersion&gt;
&lt;linux_ChromeRevision&gt;$(linux_ChromeRevision)&lt;/linux_ChromeRevision&gt;
&lt;linux_ChromeBaseSnapshotUrl&gt;$(linux_ChromeBaseSnapshotUrl)&lt;/linux_ChromeBaseSnapshotUrl&gt;

&lt;win_ChromeVersion&gt;$(win_ChromeVersion)&lt;/win_ChromeVersion&gt;
&lt;win_ChromeRevision&gt;$(win_ChromeRevision)&lt;/win_ChromeRevision&gt;
&lt;win_ChromeBaseSnapshotUrl&gt;$(win_ChromeBaseSnapshotUrl)&lt;/win_ChromeBaseSnapshotUrl&gt;
&lt;/PropertyGroup&gt;
&lt;/Project&gt;
</_PropsContent>
</PropertyGroup>
<Message Text="Writing version props: $(_PropsContent)" Importance="High" />
<WriteLinesToFile Lines="$(_PropsContent)" File="$(RepositoryEngineeringDir)testing\ChromeVersions.props" Overwrite="true" />
</Target>

<Import Project="..\Directory.Build.targets" />

</Project>
95 changes: 59 additions & 36 deletions eng/testing/wasm-provisioning.targets
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,43 @@
<Project>
<Import Project="$(MSBuildThisFileDirectory)ProvisioningVersions.props" />
<PropertyGroup>
<!--
Set ChromeChannel properties to get the latest versions
-->
<ChromeChannel>stable</ChromeChannel>

<ChromeOSIdentifier Condition="$([MSBuild]::IsOSPlatform('windows'))">win</ChromeOSIdentifier>
<ChromeOSIdentifier Condition="$([MSBuild]::IsOSPlatform('linux'))">linux</ChromeOSIdentifier>
<ChromeOSIdentifier Condition="'$(ChromeOSIdentifier)' == ''">unsupported-platform</ChromeOSIdentifier>

<!-- disable by default on unsupported platforms -->
<InstallChromeForTests Condition="'$(InstallChromeForTests)' == '' and '$(ChromeOSIdentifier)' == ''">false</InstallChromeForTests>

<FirefoxDir>$(ArtifactsBinDir)firefox\</FirefoxDir>
<FirefoxStampFile>$([MSBuild]::NormalizePath($(FirefoxDir), '.install-firefox-$(FirefoxRevision).stamp'))</FirefoxStampFile>
<_BrowserStampDir>$(ArtifactsBinDir)\</_BrowserStampDir>
</PropertyGroup>

<Import Project="$(MSBuildThisFileDirectory)ChromeVersions.props" />

<PropertyGroup Condition="'$(BrowserHost)' != 'windows'">
<FirefoxRevision>108.0.1</FirefoxRevision>
<FirefoxUrl>https://ftp.mozilla.org/pub/firefox/releases/$(FirefoxRevision)/linux-x86_64/en-US/firefox-$(FirefoxRevision).tar.bz2</FirefoxUrl>
<FirefoxBinaryName>firefox</FirefoxBinaryName>
</PropertyGroup>

<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'linux'">
<ChromeDirName>chrome-linux</ChromeDirName>
<ChromeDriverDirName>chromedriver_linux64</ChromeDriverDirName>
<ChromeBinaryName>chrome</ChromeBinaryName>
<ChromeDriverBinaryName>chromedriver</ChromeDriverBinaryName>
<_ChromeOSPrefix>Linux_x64</_ChromeOSPrefix>

<ChromeVersion>$(linux_ChromeVersion)</ChromeVersion>
<ChromeRevision>$(linux_ChromeRevision)</ChromeRevision>
<_ChromeBaseSnapshotUrl>$(linux_ChromeBaseSnapshotUrl)</_ChromeBaseSnapshotUrl>

<ChromeUrl>$(linux_ChromeBaseSnapshotUrl)/chrome-linux.zip</ChromeUrl>
<ChromeDriverUrl>$(linux_ChromeBaseSnapshotUrl)/chromedriver_linux64.zip</ChromeDriverUrl>
</PropertyGroup>

<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'win'">
Expand All@@ -15,18 +46,38 @@
<ChromeBinaryName>chrome.exe</ChromeBinaryName>
<ChromeDriverBinaryName>chromedriver.exe</ChromeDriverBinaryName>
<_ChromeOSPrefix>Win_x64</_ChromeOSPrefix>

<ChromeVersion>$(win_ChromeVersion)</ChromeVersion>
<ChromeRevision>$(win_ChromeRevision)</ChromeRevision>
<_ChromeBaseSnapshotUrl>$(win_ChromeBaseSnapshotUrl)</_ChromeBaseSnapshotUrl>

<ChromeUrl>$(win_ChromeBaseSnapshotUrl)/chrome-win.zip</ChromeUrl>
<ChromeDriverUrl>$(win_ChromeBaseSnapshotUrl)/chromedriver_win32.zip</ChromeDriverUrl>
</PropertyGroup>

<PropertyGroup>
<_BrowserStampDir>$(ArtifactsBinDir)\</_BrowserStampDir>
<PropertyGroup Condition="'$(ChromeVersion)' != ''">
<ChromeDir>$(ArtifactsBinDir)chrome\</ChromeDir>
<ChromeDriverDir>$(ArtifactsBinDir)chromedriver\</ChromeDriverDir>
<ChromeStampFile>$([MSBuild]::NormalizePath('$(ChromeDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeStampFile>
<ChromeDriverStampFile>$([MSBuild]::NormalizePath('$(ChromeDriverDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeDriverStampFile>

<ChromeBinaryPath>$([MSBuild]::NormalizePath($(ChromeDir), $(ChromeDirName), $(ChromeBinaryName)))</ChromeBinaryPath>
<ChromeDriverBinaryPath>$([MSBuild]::NormalizePath($(ChromeDriverDir), $(ChromeDriverDirName), $(ChromeDriverBinaryName)))</ChromeDriverBinaryPath>
</PropertyGroup>

<PropertyGroup Condition="'$(BrowserHost)' != 'windows'">
<FirefoxRevision>108.0.1</FirefoxRevision>
<FirefoxUrl>https://ftp.mozilla.org/pub/firefox/releases/$(FirefoxRevision)/linux-x86_64/en-US/firefox-$(FirefoxRevision).tar.bz2</FirefoxUrl>
<FirefoxBinaryName>firefox</FirefoxBinaryName>
</PropertyGroup>

<Target Name="DownloadAndInstallChrome"
AfterTargets="GetChromeVersion"
AfterTargets="Build"
Condition="(!Exists($(ChromeStampFile)) or !Exists($(ChromeBinaryPath))) and '$(InstallChromeForTests)' == 'true'">

<Error Condition="'$(ChromeVersion)' == ''"
Text="No %24(ChromeVersion) set. This can be set in eng/testing/ChromeVersions.props" />

<RemoveDir Directories="$(ChromeDir)" />

<Message Text="** Installing chrome version $(ChromeVersion), rev: $(ChromeRevision). To disable this set the msuild property InstallChromeForTests=false ."
Expand All@@ -46,9 +97,12 @@
</Target>

<Target Name="DownloadAndInstallChromeDriver"
AfterTargets="GetChromeVersion"
AfterTargets="Build"
Condition="(!Exists($(ChromeDriverStampFile)) or !Exists($(ChromeDriverBinaryPath))) and '$(InstallChromeForTests)' == 'true'">

<Error Condition="'$(ChromeVersion)' == ''"
Text="No %24(ChromeVersion) set. This can be set in eng/testing/ChromeVersions.props" />

<RemoveDir Directories="$(ChromeDriverDir)" />

<Message Text="** Installing chromedriver version $(ChromeVersion), rev: $(ChromeRevision). To disable this set the msuild property InstallChromeForTests=false ."
Expand DownExpand Up@@ -94,35 +148,4 @@

<Touch Files="$(FirefoxStampFile)" AlwaysCreate="true" />
</Target>

<UsingTask AssemblyFile="$(WasmBuildTasksAssemblyPath)"
TaskName="Microsoft.WebAssembly.Build.Tasks.GetChromeVersions" />

<Target Name="GetChromeVersion" AfterTargets="Build" Condition="'$(InstallChromeForTests)' == 'true'">
<GetChromeVersions
Condition="'$(ChromeVersion)' == ''"
OSIdentifier="$(ChromeOSIdentifier)"
OSPrefix="$(_ChromeOSPrefix)"
Channel="$(ChromeChannel)"
IntermediateOutputPath="$(ArtifactsObjDir)">
<Output TaskParameter="ChromeVersion" PropertyName="ChromeVersion" />
<Output TaskParameter="V8Version" PropertyName="V8Version" />
<Output TaskParameter="BranchPosition" PropertyName="ChromeRevision" />
<Output TaskParameter="BaseSnapshotUrl" PropertyName="_ChromeBaseSnapshotUrl" />
</GetChromeVersions>

<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'linux'">
<ChromeUrl>$(_ChromeBaseSnapshotUrl)/chrome-linux.zip</ChromeUrl>
<ChromeDriverUrl>$(_ChromeBaseSnapshotUrl)/chromedriver_linux64.zip</ChromeDriverUrl>
</PropertyGroup>
<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'win'">
<ChromeUrl>$(_ChromeBaseSnapshotUrl)/chrome-win.zip</ChromeUrl>
<ChromeDriverUrl>$(_ChromeBaseSnapshotUrl)/chromedriver_win32.zip</ChromeDriverUrl>
</PropertyGroup>

<PropertyGroup>
<ChromeStampFile>$([MSBuild]::NormalizePath('$(ChromeDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeStampFile>
<ChromeDriverStampFile>$([MSBuild]::NormalizePath('$(ChromeDriverDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeDriverStampFile>
</PropertyGroup>
</Target>
</Project>
11 changes: 6 additions & 5 deletions src/tasks/WasmBuildTasks/GetChromeVersions.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -24,10 +24,6 @@ public class GetChromeVersions : MBU.Task
private const string s_depsUrlPrefix = $"https://omahaproxy.appspot.com/deps.json?version=";
private const int s_versionCheckThresholdDays = 1;

// start at the branch position found in all.json, and try to
// download chrome, and chromedriver. If not found, then try up to
// s_numBranchPositionsToTry lower versions
private const int s_numBranchPositionsToTry = 50;
private static readonly HttpClient s_httpClient = new();

public string Channel { get; set; } = "stable";
Expand All@@ -44,6 +40,11 @@ public class GetChromeVersions : MBU.Task

public int MaxMajorVersionsToCheck { get; set; } = 2;

// start at the branch position found in all.json, and try to
// download chrome, and chromedriver. If not found, then try up to
// MaxBranchPositionsToCheck lower versions
public int MaxBranchPositionsToCheck { get; set; } = 75;

[Output]
public string ChromeVersion { get; set; } = string.Empty;
[Output]
Expand DownExpand Up@@ -240,7 +241,7 @@ private async Task<Stream> GetDownloadFileStreamAsync(string filename, string ur
string baseUrl = $"{s_snapshotBaseUrl}/{OSPrefix}";

int branchPosition = int.Parse(version.branch_base_position);
for (int i = 0; i < s_numBranchPositionsToTry; i++)
for (int i = 0; i < MaxBranchPositionsToCheck; i++)
{
string branchUrl = $"{baseUrl}/{branchPosition}";
string url = $"{branchUrl}/REVISIONS";
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [wasm] Make chrome version bumps for testing explicit, instead of automatic updates to latest by radical · Pull Request #90772 · dotnet/runtime · GitHub
Skip to content
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
65 changes: 65 additions & 0 deletions .github/workflows/bump-chrome-version.yml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
name: Update Chrome Version used for wasm testing

permissions:
contents: write
pull-requests: write

on:
schedule:
- cron: '0 0 * * 0'

workflow_dispatch:

jobs:
update:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Branch
run: |
git config user.name github-actions[bot]
git config user.email github-actions[bot]@users.noreply.github.com
git checkout -b update-chrome-version-${{ github.run_id }}

- name: Run UpdateToLatestVersion
run: >-
make -C src/mono/wasm build-tasks &&
.dotnet/dotnet build eng/testing/bump-chrome-version.proj -p:Configuration=Release &&
git add eng/testing/ChromeVersions.props

- name: Check for changes
id: check_changes
run: |
echo "has_changes=$(git diff-index --quiet HEAD && echo false || echo true)" >> $GITHUB_OUTPUT

- name: Commit Update
run: |
echo steps.check_changes.outputs.has_changes=${{steps.check_changes.outputs.has_changes}}
if ${{steps.check_changes.outputs.has_changes}} == 'true'; then
git commit -m "Automated bump of chrome version"
git push --set-upstream origin update-chrome-version-${{ github.run_id }}
else
echo "No changes detected."
fi

- name: Create PR
if: steps.check_changes.outputs.has_changes == 'true'
uses: actions/github-script@v6
with:
script: |
const { data: pullRequest } = await github.rest.pulls.create({
base: context.ref,
head: "update-chrome-version-${{ github.run_id }}",
owner: context.repo.owner,
repo: context.repo.repo,
title: '[wasm] Bump chrome version used for testing',
body: ''
});
await github.rest.pulls.requestReviewers({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: pullRequest.number,
reviewers: ["radical"]
});
return pullRequest.number;
6 changes: 3 additions & 3 deletions eng/pipelines/common/evaluate-default-paths.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,7 +6,7 @@ parameters:
# do not set them when using the template
_const_paths:
_wasm_specific_only: [
eng/testing/ProvisioningVersions.props
eng/testing/ChromeVersions.props
eng/testing/WasmRunner*
eng/testing/WasiRunner*
eng/testing/scenarios/BuildWasmAppsJobsList.txt
Expand DownExpand Up@@ -182,7 +182,7 @@ jobs:
include:
- eng/Version.Details.xml
- eng/Versions.props
eng/testing/ProvisioningVersions.props
eng/testing/ChromeVersions.props
- eng/testing/scenarios/BuildWasmAppsJobsList.txt
- eng/testing/workloads-testing.targets
- src/installer/pkg/sfx/Microsoft.NETCore.App/*
Expand DownExpand Up@@ -215,7 +215,7 @@ jobs:
- subset: wasmdebuggertests
combined: true
include:
- eng/testing/ProvisioningVersions.props
- eng/testing/ChromeVersions.props
- src/libraries/System.Runtime.InteropServices/*
- src/libraries/System.Runtime.InteropServices.JavaScript/*
- src/mono/mono/*
Expand Down
11 changes: 11 additions & 0 deletions eng/testing/ChromeVersions.props
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
<Project>
<PropertyGroup>
<linux_ChromeVersion>115.0.5790.170</linux_ChromeVersion>
<linux_ChromeRevision>1148114</linux_ChromeRevision>
<linux_ChromeBaseSnapshotUrl>https://storage.googleapis.com/chromium-browser-snapshots/Linux_x64/1148123</linux_ChromeBaseSnapshotUrl>

<win_ChromeVersion>115.0.5790.171</win_ChromeVersion>
<win_ChromeRevision>1148114</win_ChromeRevision>
<win_ChromeBaseSnapshotUrl>https://storage.googleapis.com/chromium-browser-snapshots/Win_x64/1148119</win_ChromeBaseSnapshotUrl>
</PropertyGroup>
</Project>
68 changes: 0 additions & 68 deletions eng/testing/ProvisioningVersions.props

This file was deleted.

52 changes: 52 additions & 0 deletions eng/testing/bump-chrome-version.proj
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
<Project DefaultTargets="UpdateChromeVersion">

<Import Project="..\Directory.Build.props" />
<UsingTask AssemblyFile="$(WasmBuildTasksAssemblyPath)" TaskName="Microsoft.WebAssembly.Build.Tasks.GetChromeVersions" />

<Target Name="UpdateChromeVersion">
<GetChromeVersions
OSIdentifier="linux"
OSPrefix="Linux_x64"
Channel="$(ChromeChannel)"
MaxMajorVersionsToCheck="1"
IntermediateOutputPath="$(ArtifactsObjDir)">
<Output TaskParameter="ChromeVersion" PropertyName="linux_ChromeVersion" />
<Output TaskParameter="V8Version" PropertyName="linux_V8Version" />
<Output TaskParameter="BranchPosition" PropertyName="linux_ChromeRevision" />
<Output TaskParameter="BaseSnapshotUrl" PropertyName="linux_ChromeBaseSnapshotUrl" />
</GetChromeVersions>

<GetChromeVersions
OSIdentifier="win"
OSPrefix="Win_x64"
Channel="$(ChromeChannel)"
MaxMajorVersionsToCheck="1"
IntermediateOutputPath="$(ArtifactsObjDir)">
<Output TaskParameter="ChromeVersion" PropertyName="win_ChromeVersion" />
<Output TaskParameter="V8Version" PropertyName="win_V8Version" />
<Output TaskParameter="BranchPosition" PropertyName="win_ChromeRevision" />
<Output TaskParameter="BaseSnapshotUrl" PropertyName="win_ChromeBaseSnapshotUrl" />
</GetChromeVersions>

<PropertyGroup>
<_PropsContent>
&lt;Project&gt;
&lt;PropertyGroup&gt;
&lt;linux_ChromeVersion&gt;$(linux_ChromeVersion)&lt;/linux_ChromeVersion&gt;
&lt;linux_ChromeRevision&gt;$(linux_ChromeRevision)&lt;/linux_ChromeRevision&gt;
&lt;linux_ChromeBaseSnapshotUrl&gt;$(linux_ChromeBaseSnapshotUrl)&lt;/linux_ChromeBaseSnapshotUrl&gt;

&lt;win_ChromeVersion&gt;$(win_ChromeVersion)&lt;/win_ChromeVersion&gt;
&lt;win_ChromeRevision&gt;$(win_ChromeRevision)&lt;/win_ChromeRevision&gt;
&lt;win_ChromeBaseSnapshotUrl&gt;$(win_ChromeBaseSnapshotUrl)&lt;/win_ChromeBaseSnapshotUrl&gt;
&lt;/PropertyGroup&gt;
&lt;/Project&gt;
</_PropsContent>
</PropertyGroup>
<Message Text="Writing version props: $(_PropsContent)" Importance="High" />
<WriteLinesToFile Lines="$(_PropsContent)" File="$(RepositoryEngineeringDir)testing\ChromeVersions.props" Overwrite="true" />
</Target>

<Import Project="..\Directory.Build.targets" />

</Project>
95 changes: 59 additions & 36 deletions eng/testing/wasm-provisioning.targets
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,43 @@
<Project>
<Import Project="$(MSBuildThisFileDirectory)ProvisioningVersions.props" />
<PropertyGroup>
<!--
Set ChromeChannel properties to get the latest versions
-->
<ChromeChannel>stable</ChromeChannel>

<ChromeOSIdentifier Condition="$([MSBuild]::IsOSPlatform('windows'))">win</ChromeOSIdentifier>
<ChromeOSIdentifier Condition="$([MSBuild]::IsOSPlatform('linux'))">linux</ChromeOSIdentifier>
<ChromeOSIdentifier Condition="'$(ChromeOSIdentifier)' == ''">unsupported-platform</ChromeOSIdentifier>

<!-- disable by default on unsupported platforms -->
<InstallChromeForTests Condition="'$(InstallChromeForTests)' == '' and '$(ChromeOSIdentifier)' == ''">false</InstallChromeForTests>

<FirefoxDir>$(ArtifactsBinDir)firefox\</FirefoxDir>
<FirefoxStampFile>$([MSBuild]::NormalizePath($(FirefoxDir), '.install-firefox-$(FirefoxRevision).stamp'))</FirefoxStampFile>
<_BrowserStampDir>$(ArtifactsBinDir)\</_BrowserStampDir>
</PropertyGroup>

<Import Project="$(MSBuildThisFileDirectory)ChromeVersions.props" />

<PropertyGroup Condition="'$(BrowserHost)' != 'windows'">
<FirefoxRevision>108.0.1</FirefoxRevision>
<FirefoxUrl>https://ftp.mozilla.org/pub/firefox/releases/$(FirefoxRevision)/linux-x86_64/en-US/firefox-$(FirefoxRevision).tar.bz2</FirefoxUrl>
<FirefoxBinaryName>firefox</FirefoxBinaryName>
</PropertyGroup>

<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'linux'">
<ChromeDirName>chrome-linux</ChromeDirName>
<ChromeDriverDirName>chromedriver_linux64</ChromeDriverDirName>
<ChromeBinaryName>chrome</ChromeBinaryName>
<ChromeDriverBinaryName>chromedriver</ChromeDriverBinaryName>
<_ChromeOSPrefix>Linux_x64</_ChromeOSPrefix>

<ChromeVersion>$(linux_ChromeVersion)</ChromeVersion>
<ChromeRevision>$(linux_ChromeRevision)</ChromeRevision>
<_ChromeBaseSnapshotUrl>$(linux_ChromeBaseSnapshotUrl)</_ChromeBaseSnapshotUrl>

<ChromeUrl>$(linux_ChromeBaseSnapshotUrl)/chrome-linux.zip</ChromeUrl>
<ChromeDriverUrl>$(linux_ChromeBaseSnapshotUrl)/chromedriver_linux64.zip</ChromeDriverUrl>
</PropertyGroup>

<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'win'">
Expand All@@ -15,18 +46,38 @@
<ChromeBinaryName>chrome.exe</ChromeBinaryName>
<ChromeDriverBinaryName>chromedriver.exe</ChromeDriverBinaryName>
<_ChromeOSPrefix>Win_x64</_ChromeOSPrefix>

<ChromeVersion>$(win_ChromeVersion)</ChromeVersion>
<ChromeRevision>$(win_ChromeRevision)</ChromeRevision>
<_ChromeBaseSnapshotUrl>$(win_ChromeBaseSnapshotUrl)</_ChromeBaseSnapshotUrl>

<ChromeUrl>$(win_ChromeBaseSnapshotUrl)/chrome-win.zip</ChromeUrl>
<ChromeDriverUrl>$(win_ChromeBaseSnapshotUrl)/chromedriver_win32.zip</ChromeDriverUrl>
</PropertyGroup>

<PropertyGroup>
<_BrowserStampDir>$(ArtifactsBinDir)\</_BrowserStampDir>
<PropertyGroup Condition="'$(ChromeVersion)' != ''">
<ChromeDir>$(ArtifactsBinDir)chrome\</ChromeDir>
<ChromeDriverDir>$(ArtifactsBinDir)chromedriver\</ChromeDriverDir>
<ChromeStampFile>$([MSBuild]::NormalizePath('$(ChromeDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeStampFile>
<ChromeDriverStampFile>$([MSBuild]::NormalizePath('$(ChromeDriverDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeDriverStampFile>

<ChromeBinaryPath>$([MSBuild]::NormalizePath($(ChromeDir), $(ChromeDirName), $(ChromeBinaryName)))</ChromeBinaryPath>
<ChromeDriverBinaryPath>$([MSBuild]::NormalizePath($(ChromeDriverDir), $(ChromeDriverDirName), $(ChromeDriverBinaryName)))</ChromeDriverBinaryPath>
</PropertyGroup>

<PropertyGroup Condition="'$(BrowserHost)' != 'windows'">
<FirefoxRevision>108.0.1</FirefoxRevision>
<FirefoxUrl>https://ftp.mozilla.org/pub/firefox/releases/$(FirefoxRevision)/linux-x86_64/en-US/firefox-$(FirefoxRevision).tar.bz2</FirefoxUrl>
<FirefoxBinaryName>firefox</FirefoxBinaryName>
</PropertyGroup>

<Target Name="DownloadAndInstallChrome"
AfterTargets="GetChromeVersion"
AfterTargets="Build"
Condition="(!Exists($(ChromeStampFile)) or !Exists($(ChromeBinaryPath))) and '$(InstallChromeForTests)' == 'true'">

<Error Condition="'$(ChromeVersion)' == ''"
Text="No %24(ChromeVersion) set. This can be set in eng/testing/ChromeVersions.props" />

<RemoveDir Directories="$(ChromeDir)" />

<Message Text="** Installing chrome version $(ChromeVersion), rev: $(ChromeRevision). To disable this set the msuild property InstallChromeForTests=false ."
Expand All@@ -46,9 +97,12 @@
</Target>

<Target Name="DownloadAndInstallChromeDriver"
AfterTargets="GetChromeVersion"
AfterTargets="Build"
Condition="(!Exists($(ChromeDriverStampFile)) or !Exists($(ChromeDriverBinaryPath))) and '$(InstallChromeForTests)' == 'true'">

<Error Condition="'$(ChromeVersion)' == ''"
Text="No %24(ChromeVersion) set. This can be set in eng/testing/ChromeVersions.props" />

<RemoveDir Directories="$(ChromeDriverDir)" />

<Message Text="** Installing chromedriver version $(ChromeVersion), rev: $(ChromeRevision). To disable this set the msuild property InstallChromeForTests=false ."
Expand DownExpand Up@@ -94,35 +148,4 @@

<Touch Files="$(FirefoxStampFile)" AlwaysCreate="true" />
</Target>

<UsingTask AssemblyFile="$(WasmBuildTasksAssemblyPath)"
TaskName="Microsoft.WebAssembly.Build.Tasks.GetChromeVersions" />

<Target Name="GetChromeVersion" AfterTargets="Build" Condition="'$(InstallChromeForTests)' == 'true'">
<GetChromeVersions
Condition="'$(ChromeVersion)' == ''"
OSIdentifier="$(ChromeOSIdentifier)"
OSPrefix="$(_ChromeOSPrefix)"
Channel="$(ChromeChannel)"
IntermediateOutputPath="$(ArtifactsObjDir)">
<Output TaskParameter="ChromeVersion" PropertyName="ChromeVersion" />
<Output TaskParameter="V8Version" PropertyName="V8Version" />
<Output TaskParameter="BranchPosition" PropertyName="ChromeRevision" />
<Output TaskParameter="BaseSnapshotUrl" PropertyName="_ChromeBaseSnapshotUrl" />
</GetChromeVersions>

<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'linux'">
<ChromeUrl>$(_ChromeBaseSnapshotUrl)/chrome-linux.zip</ChromeUrl>
<ChromeDriverUrl>$(_ChromeBaseSnapshotUrl)/chromedriver_linux64.zip</ChromeDriverUrl>
</PropertyGroup>
<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'win'">
<ChromeUrl>$(_ChromeBaseSnapshotUrl)/chrome-win.zip</ChromeUrl>
<ChromeDriverUrl>$(_ChromeBaseSnapshotUrl)/chromedriver_win32.zip</ChromeDriverUrl>
</PropertyGroup>

<PropertyGroup>
<ChromeStampFile>$([MSBuild]::NormalizePath('$(ChromeDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeStampFile>
<ChromeDriverStampFile>$([MSBuild]::NormalizePath('$(ChromeDriverDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeDriverStampFile>
</PropertyGroup>
</Target>
</Project>
11 changes: 6 additions & 5 deletions src/tasks/WasmBuildTasks/GetChromeVersions.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -24,10 +24,6 @@ public class GetChromeVersions : MBU.Task
private const string s_depsUrlPrefix = $"https://omahaproxy.appspot.com/deps.json?version=";
private const int s_versionCheckThresholdDays = 1;

// start at the branch position found in all.json, and try to
// download chrome, and chromedriver. If not found, then try up to
// s_numBranchPositionsToTry lower versions
private const int s_numBranchPositionsToTry = 50;
private static readonly HttpClient s_httpClient = new();

public string Channel { get; set; } = "stable";
Expand All@@ -44,6 +40,11 @@ public class GetChromeVersions : MBU.Task

public int MaxMajorVersionsToCheck { get; set; } = 2;

// start at the branch position found in all.json, and try to
// download chrome, and chromedriver. If not found, then try up to
// MaxBranchPositionsToCheck lower versions
public int MaxBranchPositionsToCheck { get; set; } = 75;

[Output]
public string ChromeVersion { get; set; } = string.Empty;
[Output]
Expand DownExpand Up@@ -240,7 +241,7 @@ private async Task<Stream> GetDownloadFileStreamAsync(string filename, string ur
string baseUrl = $"{s_snapshotBaseUrl}/{OSPrefix}";

int branchPosition = int.Parse(version.branch_base_position);
for (int i = 0; i < s_numBranchPositionsToTry; i++)
for (int i = 0; i < MaxBranchPositionsToCheck; i++)
{
string branchUrl = $"{baseUrl}/{branchPosition}";
string url = $"{branchUrl}/REVISIONS";
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [wasm] Make chrome version bumps for testing explicit, instead of automatic updates to latest by radical · Pull Request #90772 · dotnet/runtime · GitHub
Skip to content
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
65 changes: 65 additions & 0 deletions .github/workflows/bump-chrome-version.yml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
name: Update Chrome Version used for wasm testing

permissions:
contents: write
pull-requests: write

on:
schedule:
- cron: '0 0 * * 0'

workflow_dispatch:

jobs:
update:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Branch
run: |
git config user.name github-actions[bot]
git config user.email github-actions[bot]@users.noreply.github.com
git checkout -b update-chrome-version-${{ github.run_id }}

- name: Run UpdateToLatestVersion
run: >-
make -C src/mono/wasm build-tasks &&
.dotnet/dotnet build eng/testing/bump-chrome-version.proj -p:Configuration=Release &&
git add eng/testing/ChromeVersions.props

- name: Check for changes
id: check_changes
run: |
echo "has_changes=$(git diff-index --quiet HEAD && echo false || echo true)" >> $GITHUB_OUTPUT

- name: Commit Update
run: |
echo steps.check_changes.outputs.has_changes=${{steps.check_changes.outputs.has_changes}}
if ${{steps.check_changes.outputs.has_changes}} == 'true'; then
git commit -m "Automated bump of chrome version"
git push --set-upstream origin update-chrome-version-${{ github.run_id }}
else
echo "No changes detected."
fi

- name: Create PR
if: steps.check_changes.outputs.has_changes == 'true'
uses: actions/github-script@v6
with:
script: |
const { data: pullRequest } = await github.rest.pulls.create({
base: context.ref,
head: "update-chrome-version-${{ github.run_id }}",
owner: context.repo.owner,
repo: context.repo.repo,
title: '[wasm] Bump chrome version used for testing',
body: ''
});
await github.rest.pulls.requestReviewers({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: pullRequest.number,
reviewers: ["radical"]
});
return pullRequest.number;
6 changes: 3 additions & 3 deletions eng/pipelines/common/evaluate-default-paths.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,7 +6,7 @@ parameters:
# do not set them when using the template
_const_paths:
_wasm_specific_only: [
eng/testing/ProvisioningVersions.props
eng/testing/ChromeVersions.props
eng/testing/WasmRunner*
eng/testing/WasiRunner*
eng/testing/scenarios/BuildWasmAppsJobsList.txt
Expand DownExpand Up@@ -182,7 +182,7 @@ jobs:
include:
- eng/Version.Details.xml
- eng/Versions.props
eng/testing/ProvisioningVersions.props
eng/testing/ChromeVersions.props
- eng/testing/scenarios/BuildWasmAppsJobsList.txt
- eng/testing/workloads-testing.targets
- src/installer/pkg/sfx/Microsoft.NETCore.App/*
Expand DownExpand Up@@ -215,7 +215,7 @@ jobs:
- subset: wasmdebuggertests
combined: true
include:
- eng/testing/ProvisioningVersions.props
- eng/testing/ChromeVersions.props
- src/libraries/System.Runtime.InteropServices/*
- src/libraries/System.Runtime.InteropServices.JavaScript/*
- src/mono/mono/*
Expand Down
11 changes: 11 additions & 0 deletions eng/testing/ChromeVersions.props
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
<Project>
<PropertyGroup>
<linux_ChromeVersion>115.0.5790.170</linux_ChromeVersion>
<linux_ChromeRevision>1148114</linux_ChromeRevision>
<linux_ChromeBaseSnapshotUrl>https://storage.googleapis.com/chromium-browser-snapshots/Linux_x64/1148123</linux_ChromeBaseSnapshotUrl>

<win_ChromeVersion>115.0.5790.171</win_ChromeVersion>
<win_ChromeRevision>1148114</win_ChromeRevision>
<win_ChromeBaseSnapshotUrl>https://storage.googleapis.com/chromium-browser-snapshots/Win_x64/1148119</win_ChromeBaseSnapshotUrl>
</PropertyGroup>
</Project>
68 changes: 0 additions & 68 deletions eng/testing/ProvisioningVersions.props

This file was deleted.

52 changes: 52 additions & 0 deletions eng/testing/bump-chrome-version.proj
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
<Project DefaultTargets="UpdateChromeVersion">

<Import Project="..\Directory.Build.props" />
<UsingTask AssemblyFile="$(WasmBuildTasksAssemblyPath)" TaskName="Microsoft.WebAssembly.Build.Tasks.GetChromeVersions" />

<Target Name="UpdateChromeVersion">
<GetChromeVersions
OSIdentifier="linux"
OSPrefix="Linux_x64"
Channel="$(ChromeChannel)"
MaxMajorVersionsToCheck="1"
IntermediateOutputPath="$(ArtifactsObjDir)">
<Output TaskParameter="ChromeVersion" PropertyName="linux_ChromeVersion" />
<Output TaskParameter="V8Version" PropertyName="linux_V8Version" />
<Output TaskParameter="BranchPosition" PropertyName="linux_ChromeRevision" />
<Output TaskParameter="BaseSnapshotUrl" PropertyName="linux_ChromeBaseSnapshotUrl" />
</GetChromeVersions>

<GetChromeVersions
OSIdentifier="win"
OSPrefix="Win_x64"
Channel="$(ChromeChannel)"
MaxMajorVersionsToCheck="1"
IntermediateOutputPath="$(ArtifactsObjDir)">
<Output TaskParameter="ChromeVersion" PropertyName="win_ChromeVersion" />
<Output TaskParameter="V8Version" PropertyName="win_V8Version" />
<Output TaskParameter="BranchPosition" PropertyName="win_ChromeRevision" />
<Output TaskParameter="BaseSnapshotUrl" PropertyName="win_ChromeBaseSnapshotUrl" />
</GetChromeVersions>

<PropertyGroup>
<_PropsContent>
&lt;Project&gt;
&lt;PropertyGroup&gt;
&lt;linux_ChromeVersion&gt;$(linux_ChromeVersion)&lt;/linux_ChromeVersion&gt;
&lt;linux_ChromeRevision&gt;$(linux_ChromeRevision)&lt;/linux_ChromeRevision&gt;
&lt;linux_ChromeBaseSnapshotUrl&gt;$(linux_ChromeBaseSnapshotUrl)&lt;/linux_ChromeBaseSnapshotUrl&gt;

&lt;win_ChromeVersion&gt;$(win_ChromeVersion)&lt;/win_ChromeVersion&gt;
&lt;win_ChromeRevision&gt;$(win_ChromeRevision)&lt;/win_ChromeRevision&gt;
&lt;win_ChromeBaseSnapshotUrl&gt;$(win_ChromeBaseSnapshotUrl)&lt;/win_ChromeBaseSnapshotUrl&gt;
&lt;/PropertyGroup&gt;
&lt;/Project&gt;
</_PropsContent>
</PropertyGroup>
<Message Text="Writing version props: $(_PropsContent)" Importance="High" />
<WriteLinesToFile Lines="$(_PropsContent)" File="$(RepositoryEngineeringDir)testing\ChromeVersions.props" Overwrite="true" />
</Target>

<Import Project="..\Directory.Build.targets" />

</Project>
95 changes: 59 additions & 36 deletions eng/testing/wasm-provisioning.targets
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,43 @@
<Project>
<Import Project="$(MSBuildThisFileDirectory)ProvisioningVersions.props" />
<PropertyGroup>
<!--
Set ChromeChannel properties to get the latest versions
-->
<ChromeChannel>stable</ChromeChannel>

<ChromeOSIdentifier Condition="$([MSBuild]::IsOSPlatform('windows'))">win</ChromeOSIdentifier>
<ChromeOSIdentifier Condition="$([MSBuild]::IsOSPlatform('linux'))">linux</ChromeOSIdentifier>
<ChromeOSIdentifier Condition="'$(ChromeOSIdentifier)' == ''">unsupported-platform</ChromeOSIdentifier>

<!-- disable by default on unsupported platforms -->
<InstallChromeForTests Condition="'$(InstallChromeForTests)' == '' and '$(ChromeOSIdentifier)' == ''">false</InstallChromeForTests>

<FirefoxDir>$(ArtifactsBinDir)firefox\</FirefoxDir>
<FirefoxStampFile>$([MSBuild]::NormalizePath($(FirefoxDir), '.install-firefox-$(FirefoxRevision).stamp'))</FirefoxStampFile>
<_BrowserStampDir>$(ArtifactsBinDir)\</_BrowserStampDir>
</PropertyGroup>

<Import Project="$(MSBuildThisFileDirectory)ChromeVersions.props" />

<PropertyGroup Condition="'$(BrowserHost)' != 'windows'">
<FirefoxRevision>108.0.1</FirefoxRevision>
<FirefoxUrl>https://ftp.mozilla.org/pub/firefox/releases/$(FirefoxRevision)/linux-x86_64/en-US/firefox-$(FirefoxRevision).tar.bz2</FirefoxUrl>
<FirefoxBinaryName>firefox</FirefoxBinaryName>
</PropertyGroup>

<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'linux'">
<ChromeDirName>chrome-linux</ChromeDirName>
<ChromeDriverDirName>chromedriver_linux64</ChromeDriverDirName>
<ChromeBinaryName>chrome</ChromeBinaryName>
<ChromeDriverBinaryName>chromedriver</ChromeDriverBinaryName>
<_ChromeOSPrefix>Linux_x64</_ChromeOSPrefix>

<ChromeVersion>$(linux_ChromeVersion)</ChromeVersion>
<ChromeRevision>$(linux_ChromeRevision)</ChromeRevision>
<_ChromeBaseSnapshotUrl>$(linux_ChromeBaseSnapshotUrl)</_ChromeBaseSnapshotUrl>

<ChromeUrl>$(linux_ChromeBaseSnapshotUrl)/chrome-linux.zip</ChromeUrl>
<ChromeDriverUrl>$(linux_ChromeBaseSnapshotUrl)/chromedriver_linux64.zip</ChromeDriverUrl>
</PropertyGroup>

<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'win'">
Expand All@@ -15,18 +46,38 @@
<ChromeBinaryName>chrome.exe</ChromeBinaryName>
<ChromeDriverBinaryName>chromedriver.exe</ChromeDriverBinaryName>
<_ChromeOSPrefix>Win_x64</_ChromeOSPrefix>

<ChromeVersion>$(win_ChromeVersion)</ChromeVersion>
<ChromeRevision>$(win_ChromeRevision)</ChromeRevision>
<_ChromeBaseSnapshotUrl>$(win_ChromeBaseSnapshotUrl)</_ChromeBaseSnapshotUrl>

<ChromeUrl>$(win_ChromeBaseSnapshotUrl)/chrome-win.zip</ChromeUrl>
<ChromeDriverUrl>$(win_ChromeBaseSnapshotUrl)/chromedriver_win32.zip</ChromeDriverUrl>
</PropertyGroup>

<PropertyGroup>
<_BrowserStampDir>$(ArtifactsBinDir)\</_BrowserStampDir>
<PropertyGroup Condition="'$(ChromeVersion)' != ''">
<ChromeDir>$(ArtifactsBinDir)chrome\</ChromeDir>
<ChromeDriverDir>$(ArtifactsBinDir)chromedriver\</ChromeDriverDir>
<ChromeStampFile>$([MSBuild]::NormalizePath('$(ChromeDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeStampFile>
<ChromeDriverStampFile>$([MSBuild]::NormalizePath('$(ChromeDriverDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeDriverStampFile>

<ChromeBinaryPath>$([MSBuild]::NormalizePath($(ChromeDir), $(ChromeDirName), $(ChromeBinaryName)))</ChromeBinaryPath>
<ChromeDriverBinaryPath>$([MSBuild]::NormalizePath($(ChromeDriverDir), $(ChromeDriverDirName), $(ChromeDriverBinaryName)))</ChromeDriverBinaryPath>
</PropertyGroup>

<PropertyGroup Condition="'$(BrowserHost)' != 'windows'">
<FirefoxRevision>108.0.1</FirefoxRevision>
<FirefoxUrl>https://ftp.mozilla.org/pub/firefox/releases/$(FirefoxRevision)/linux-x86_64/en-US/firefox-$(FirefoxRevision).tar.bz2</FirefoxUrl>
<FirefoxBinaryName>firefox</FirefoxBinaryName>
</PropertyGroup>

<Target Name="DownloadAndInstallChrome"
AfterTargets="GetChromeVersion"
AfterTargets="Build"
Condition="(!Exists($(ChromeStampFile)) or !Exists($(ChromeBinaryPath))) and '$(InstallChromeForTests)' == 'true'">

<Error Condition="'$(ChromeVersion)' == ''"
Text="No %24(ChromeVersion) set. This can be set in eng/testing/ChromeVersions.props" />

<RemoveDir Directories="$(ChromeDir)" />

<Message Text="** Installing chrome version $(ChromeVersion), rev: $(ChromeRevision). To disable this set the msuild property InstallChromeForTests=false ."
Expand All@@ -46,9 +97,12 @@
</Target>

<Target Name="DownloadAndInstallChromeDriver"
AfterTargets="GetChromeVersion"
AfterTargets="Build"
Condition="(!Exists($(ChromeDriverStampFile)) or !Exists($(ChromeDriverBinaryPath))) and '$(InstallChromeForTests)' == 'true'">

<Error Condition="'$(ChromeVersion)' == ''"
Text="No %24(ChromeVersion) set. This can be set in eng/testing/ChromeVersions.props" />

<RemoveDir Directories="$(ChromeDriverDir)" />

<Message Text="** Installing chromedriver version $(ChromeVersion), rev: $(ChromeRevision). To disable this set the msuild property InstallChromeForTests=false ."
Expand DownExpand Up@@ -94,35 +148,4 @@

<Touch Files="$(FirefoxStampFile)" AlwaysCreate="true" />
</Target>

<UsingTask AssemblyFile="$(WasmBuildTasksAssemblyPath)"
TaskName="Microsoft.WebAssembly.Build.Tasks.GetChromeVersions" />

<Target Name="GetChromeVersion" AfterTargets="Build" Condition="'$(InstallChromeForTests)' == 'true'">
<GetChromeVersions
Condition="'$(ChromeVersion)' == ''"
OSIdentifier="$(ChromeOSIdentifier)"
OSPrefix="$(_ChromeOSPrefix)"
Channel="$(ChromeChannel)"
IntermediateOutputPath="$(ArtifactsObjDir)">
<Output TaskParameter="ChromeVersion" PropertyName="ChromeVersion" />
<Output TaskParameter="V8Version" PropertyName="V8Version" />
<Output TaskParameter="BranchPosition" PropertyName="ChromeRevision" />
<Output TaskParameter="BaseSnapshotUrl" PropertyName="_ChromeBaseSnapshotUrl" />
</GetChromeVersions>

<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'linux'">
<ChromeUrl>$(_ChromeBaseSnapshotUrl)/chrome-linux.zip</ChromeUrl>
<ChromeDriverUrl>$(_ChromeBaseSnapshotUrl)/chromedriver_linux64.zip</ChromeDriverUrl>
</PropertyGroup>
<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'win'">
<ChromeUrl>$(_ChromeBaseSnapshotUrl)/chrome-win.zip</ChromeUrl>
<ChromeDriverUrl>$(_ChromeBaseSnapshotUrl)/chromedriver_win32.zip</ChromeDriverUrl>
</PropertyGroup>

<PropertyGroup>
<ChromeStampFile>$([MSBuild]::NormalizePath('$(ChromeDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeStampFile>
<ChromeDriverStampFile>$([MSBuild]::NormalizePath('$(ChromeDriverDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeDriverStampFile>
</PropertyGroup>
</Target>
</Project>
11 changes: 6 additions & 5 deletions src/tasks/WasmBuildTasks/GetChromeVersions.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -24,10 +24,6 @@ public class GetChromeVersions : MBU.Task
private const string s_depsUrlPrefix = $"https://omahaproxy.appspot.com/deps.json?version=";
private const int s_versionCheckThresholdDays = 1;

// start at the branch position found in all.json, and try to
// download chrome, and chromedriver. If not found, then try up to
// s_numBranchPositionsToTry lower versions
private const int s_numBranchPositionsToTry = 50;
private static readonly HttpClient s_httpClient = new();

public string Channel { get; set; } = "stable";
Expand All@@ -44,6 +40,11 @@ public class GetChromeVersions : MBU.Task

public int MaxMajorVersionsToCheck { get; set; } = 2;

// start at the branch position found in all.json, and try to
// download chrome, and chromedriver. If not found, then try up to
// MaxBranchPositionsToCheck lower versions
public int MaxBranchPositionsToCheck { get; set; } = 75;

[Output]
public string ChromeVersion { get; set; } = string.Empty;
[Output]
Expand DownExpand Up@@ -240,7 +241,7 @@ private async Task<Stream> GetDownloadFileStreamAsync(string filename, string ur
string baseUrl = $"{s_snapshotBaseUrl}/{OSPrefix}";

int branchPosition = int.Parse(version.branch_base_position);
for (int i = 0; i < s_numBranchPositionsToTry; i++)
for (int i = 0; i < MaxBranchPositionsToCheck; i++)
{
string branchUrl = $"{baseUrl}/{branchPosition}";
string url = $"{branchUrl}/REVISIONS";
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' [wasm] Make chrome version bumps for testing explicit, instead of automatic updates to latest by radical · Pull Request #90772 · dotnet/runtime · GitHub
Skip to content
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
65 changes: 65 additions & 0 deletions .github/workflows/bump-chrome-version.yml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
name: Update Chrome Version used for wasm testing

permissions:
contents: write
pull-requests: write

on:
schedule:
- cron: '0 0 * * 0'

workflow_dispatch:

jobs:
update:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Branch
run: |
git config user.name github-actions[bot]
git config user.email github-actions[bot]@users.noreply.github.com
git checkout -b update-chrome-version-${{ github.run_id }}

- name: Run UpdateToLatestVersion
run: >-
make -C src/mono/wasm build-tasks &&
.dotnet/dotnet build eng/testing/bump-chrome-version.proj -p:Configuration=Release &&
git add eng/testing/ChromeVersions.props

- name: Check for changes
id: check_changes
run: |
echo "has_changes=$(git diff-index --quiet HEAD && echo false || echo true)" >> $GITHUB_OUTPUT

- name: Commit Update
run: |
echo steps.check_changes.outputs.has_changes=${{steps.check_changes.outputs.has_changes}}
if ${{steps.check_changes.outputs.has_changes}} == 'true'; then
git commit -m "Automated bump of chrome version"
git push --set-upstream origin update-chrome-version-${{ github.run_id }}
else
echo "No changes detected."
fi

- name: Create PR
if: steps.check_changes.outputs.has_changes == 'true'
uses: actions/github-script@v6
with:
script: |
const { data: pullRequest } = await github.rest.pulls.create({
base: context.ref,
head: "update-chrome-version-${{ github.run_id }}",
owner: context.repo.owner,
repo: context.repo.repo,
title: '[wasm] Bump chrome version used for testing',
body: ''
});
await github.rest.pulls.requestReviewers({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: pullRequest.number,
reviewers: ["radical"]
});
return pullRequest.number;
6 changes: 3 additions & 3 deletions eng/pipelines/common/evaluate-default-paths.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,7 +6,7 @@ parameters:
# do not set them when using the template
_const_paths:
_wasm_specific_only: [
eng/testing/ProvisioningVersions.props
eng/testing/ChromeVersions.props
eng/testing/WasmRunner*
eng/testing/WasiRunner*
eng/testing/scenarios/BuildWasmAppsJobsList.txt
Expand DownExpand Up@@ -182,7 +182,7 @@ jobs:
include:
- eng/Version.Details.xml
- eng/Versions.props
eng/testing/ProvisioningVersions.props
eng/testing/ChromeVersions.props
- eng/testing/scenarios/BuildWasmAppsJobsList.txt
- eng/testing/workloads-testing.targets
- src/installer/pkg/sfx/Microsoft.NETCore.App/*
Expand DownExpand Up@@ -215,7 +215,7 @@ jobs:
- subset: wasmdebuggertests
combined: true
include:
- eng/testing/ProvisioningVersions.props
- eng/testing/ChromeVersions.props
- src/libraries/System.Runtime.InteropServices/*
- src/libraries/System.Runtime.InteropServices.JavaScript/*
- src/mono/mono/*
Expand Down
11 changes: 11 additions & 0 deletions eng/testing/ChromeVersions.props
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
<Project>
<PropertyGroup>
<linux_ChromeVersion>115.0.5790.170</linux_ChromeVersion>
<linux_ChromeRevision>1148114</linux_ChromeRevision>
<linux_ChromeBaseSnapshotUrl>https://storage.googleapis.com/chromium-browser-snapshots/Linux_x64/1148123</linux_ChromeBaseSnapshotUrl>

<win_ChromeVersion>115.0.5790.171</win_ChromeVersion>
<win_ChromeRevision>1148114</win_ChromeRevision>
<win_ChromeBaseSnapshotUrl>https://storage.googleapis.com/chromium-browser-snapshots/Win_x64/1148119</win_ChromeBaseSnapshotUrl>
</PropertyGroup>
</Project>
68 changes: 0 additions & 68 deletions eng/testing/ProvisioningVersions.props

This file was deleted.

52 changes: 52 additions & 0 deletions eng/testing/bump-chrome-version.proj
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
<Project DefaultTargets="UpdateChromeVersion">

<Import Project="..\Directory.Build.props" />
<UsingTask AssemblyFile="$(WasmBuildTasksAssemblyPath)" TaskName="Microsoft.WebAssembly.Build.Tasks.GetChromeVersions" />

<Target Name="UpdateChromeVersion">
<GetChromeVersions
OSIdentifier="linux"
OSPrefix="Linux_x64"
Channel="$(ChromeChannel)"
MaxMajorVersionsToCheck="1"
IntermediateOutputPath="$(ArtifactsObjDir)">
<Output TaskParameter="ChromeVersion" PropertyName="linux_ChromeVersion" />
<Output TaskParameter="V8Version" PropertyName="linux_V8Version" />
<Output TaskParameter="BranchPosition" PropertyName="linux_ChromeRevision" />
<Output TaskParameter="BaseSnapshotUrl" PropertyName="linux_ChromeBaseSnapshotUrl" />
</GetChromeVersions>

<GetChromeVersions
OSIdentifier="win"
OSPrefix="Win_x64"
Channel="$(ChromeChannel)"
MaxMajorVersionsToCheck="1"
IntermediateOutputPath="$(ArtifactsObjDir)">
<Output TaskParameter="ChromeVersion" PropertyName="win_ChromeVersion" />
<Output TaskParameter="V8Version" PropertyName="win_V8Version" />
<Output TaskParameter="BranchPosition" PropertyName="win_ChromeRevision" />
<Output TaskParameter="BaseSnapshotUrl" PropertyName="win_ChromeBaseSnapshotUrl" />
</GetChromeVersions>

<PropertyGroup>
<_PropsContent>
&lt;Project&gt;
&lt;PropertyGroup&gt;
&lt;linux_ChromeVersion&gt;$(linux_ChromeVersion)&lt;/linux_ChromeVersion&gt;
&lt;linux_ChromeRevision&gt;$(linux_ChromeRevision)&lt;/linux_ChromeRevision&gt;
&lt;linux_ChromeBaseSnapshotUrl&gt;$(linux_ChromeBaseSnapshotUrl)&lt;/linux_ChromeBaseSnapshotUrl&gt;

&lt;win_ChromeVersion&gt;$(win_ChromeVersion)&lt;/win_ChromeVersion&gt;
&lt;win_ChromeRevision&gt;$(win_ChromeRevision)&lt;/win_ChromeRevision&gt;
&lt;win_ChromeBaseSnapshotUrl&gt;$(win_ChromeBaseSnapshotUrl)&lt;/win_ChromeBaseSnapshotUrl&gt;
&lt;/PropertyGroup&gt;
&lt;/Project&gt;
</_PropsContent>
</PropertyGroup>
<Message Text="Writing version props: $(_PropsContent)" Importance="High" />
<WriteLinesToFile Lines="$(_PropsContent)" File="$(RepositoryEngineeringDir)testing\ChromeVersions.props" Overwrite="true" />
</Target>

<Import Project="..\Directory.Build.targets" />

</Project>
95 changes: 59 additions & 36 deletions eng/testing/wasm-provisioning.targets
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,43 @@
<Project>
<Import Project="$(MSBuildThisFileDirectory)ProvisioningVersions.props" />
<PropertyGroup>
<!--
Set ChromeChannel properties to get the latest versions
-->
<ChromeChannel>stable</ChromeChannel>

<ChromeOSIdentifier Condition="$([MSBuild]::IsOSPlatform('windows'))">win</ChromeOSIdentifier>
<ChromeOSIdentifier Condition="$([MSBuild]::IsOSPlatform('linux'))">linux</ChromeOSIdentifier>
<ChromeOSIdentifier Condition="'$(ChromeOSIdentifier)' == ''">unsupported-platform</ChromeOSIdentifier>

<!-- disable by default on unsupported platforms -->
<InstallChromeForTests Condition="'$(InstallChromeForTests)' == '' and '$(ChromeOSIdentifier)' == ''">false</InstallChromeForTests>

<FirefoxDir>$(ArtifactsBinDir)firefox\</FirefoxDir>
<FirefoxStampFile>$([MSBuild]::NormalizePath($(FirefoxDir), '.install-firefox-$(FirefoxRevision).stamp'))</FirefoxStampFile>
<_BrowserStampDir>$(ArtifactsBinDir)\</_BrowserStampDir>
</PropertyGroup>

<Import Project="$(MSBuildThisFileDirectory)ChromeVersions.props" />

<PropertyGroup Condition="'$(BrowserHost)' != 'windows'">
<FirefoxRevision>108.0.1</FirefoxRevision>
<FirefoxUrl>https://ftp.mozilla.org/pub/firefox/releases/$(FirefoxRevision)/linux-x86_64/en-US/firefox-$(FirefoxRevision).tar.bz2</FirefoxUrl>
<FirefoxBinaryName>firefox</FirefoxBinaryName>
</PropertyGroup>

<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'linux'">
<ChromeDirName>chrome-linux</ChromeDirName>
<ChromeDriverDirName>chromedriver_linux64</ChromeDriverDirName>
<ChromeBinaryName>chrome</ChromeBinaryName>
<ChromeDriverBinaryName>chromedriver</ChromeDriverBinaryName>
<_ChromeOSPrefix>Linux_x64</_ChromeOSPrefix>

<ChromeVersion>$(linux_ChromeVersion)</ChromeVersion>
<ChromeRevision>$(linux_ChromeRevision)</ChromeRevision>
<_ChromeBaseSnapshotUrl>$(linux_ChromeBaseSnapshotUrl)</_ChromeBaseSnapshotUrl>

<ChromeUrl>$(linux_ChromeBaseSnapshotUrl)/chrome-linux.zip</ChromeUrl>
<ChromeDriverUrl>$(linux_ChromeBaseSnapshotUrl)/chromedriver_linux64.zip</ChromeDriverUrl>
</PropertyGroup>

<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'win'">
Expand All@@ -15,18 +46,38 @@
<ChromeBinaryName>chrome.exe</ChromeBinaryName>
<ChromeDriverBinaryName>chromedriver.exe</ChromeDriverBinaryName>
<_ChromeOSPrefix>Win_x64</_ChromeOSPrefix>

<ChromeVersion>$(win_ChromeVersion)</ChromeVersion>
<ChromeRevision>$(win_ChromeRevision)</ChromeRevision>
<_ChromeBaseSnapshotUrl>$(win_ChromeBaseSnapshotUrl)</_ChromeBaseSnapshotUrl>

<ChromeUrl>$(win_ChromeBaseSnapshotUrl)/chrome-win.zip</ChromeUrl>
<ChromeDriverUrl>$(win_ChromeBaseSnapshotUrl)/chromedriver_win32.zip</ChromeDriverUrl>
</PropertyGroup>

<PropertyGroup>
<_BrowserStampDir>$(ArtifactsBinDir)\</_BrowserStampDir>
<PropertyGroup Condition="'$(ChromeVersion)' != ''">
<ChromeDir>$(ArtifactsBinDir)chrome\</ChromeDir>
<ChromeDriverDir>$(ArtifactsBinDir)chromedriver\</ChromeDriverDir>
<ChromeStampFile>$([MSBuild]::NormalizePath('$(ChromeDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeStampFile>
<ChromeDriverStampFile>$([MSBuild]::NormalizePath('$(ChromeDriverDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeDriverStampFile>

<ChromeBinaryPath>$([MSBuild]::NormalizePath($(ChromeDir), $(ChromeDirName), $(ChromeBinaryName)))</ChromeBinaryPath>
<ChromeDriverBinaryPath>$([MSBuild]::NormalizePath($(ChromeDriverDir), $(ChromeDriverDirName), $(ChromeDriverBinaryName)))</ChromeDriverBinaryPath>
</PropertyGroup>

<PropertyGroup Condition="'$(BrowserHost)' != 'windows'">
<FirefoxRevision>108.0.1</FirefoxRevision>
<FirefoxUrl>https://ftp.mozilla.org/pub/firefox/releases/$(FirefoxRevision)/linux-x86_64/en-US/firefox-$(FirefoxRevision).tar.bz2</FirefoxUrl>
<FirefoxBinaryName>firefox</FirefoxBinaryName>
</PropertyGroup>

<Target Name="DownloadAndInstallChrome"
AfterTargets="GetChromeVersion"
AfterTargets="Build"
Condition="(!Exists($(ChromeStampFile)) or !Exists($(ChromeBinaryPath))) and '$(InstallChromeForTests)' == 'true'">

<Error Condition="'$(ChromeVersion)' == ''"
Text="No %24(ChromeVersion) set. This can be set in eng/testing/ChromeVersions.props" />

<RemoveDir Directories="$(ChromeDir)" />

<Message Text="** Installing chrome version $(ChromeVersion), rev: $(ChromeRevision). To disable this set the msuild property InstallChromeForTests=false ."
Expand All@@ -46,9 +97,12 @@
</Target>

<Target Name="DownloadAndInstallChromeDriver"
AfterTargets="GetChromeVersion"
AfterTargets="Build"
Condition="(!Exists($(ChromeDriverStampFile)) or !Exists($(ChromeDriverBinaryPath))) and '$(InstallChromeForTests)' == 'true'">

<Error Condition="'$(ChromeVersion)' == ''"
Text="No %24(ChromeVersion) set. This can be set in eng/testing/ChromeVersions.props" />

<RemoveDir Directories="$(ChromeDriverDir)" />

<Message Text="** Installing chromedriver version $(ChromeVersion), rev: $(ChromeRevision). To disable this set the msuild property InstallChromeForTests=false ."
Expand DownExpand Up@@ -94,35 +148,4 @@

<Touch Files="$(FirefoxStampFile)" AlwaysCreate="true" />
</Target>

<UsingTask AssemblyFile="$(WasmBuildTasksAssemblyPath)"
TaskName="Microsoft.WebAssembly.Build.Tasks.GetChromeVersions" />

<Target Name="GetChromeVersion" AfterTargets="Build" Condition="'$(InstallChromeForTests)' == 'true'">
<GetChromeVersions
Condition="'$(ChromeVersion)' == ''"
OSIdentifier="$(ChromeOSIdentifier)"
OSPrefix="$(_ChromeOSPrefix)"
Channel="$(ChromeChannel)"
IntermediateOutputPath="$(ArtifactsObjDir)">
<Output TaskParameter="ChromeVersion" PropertyName="ChromeVersion" />
<Output TaskParameter="V8Version" PropertyName="V8Version" />
<Output TaskParameter="BranchPosition" PropertyName="ChromeRevision" />
<Output TaskParameter="BaseSnapshotUrl" PropertyName="_ChromeBaseSnapshotUrl" />
</GetChromeVersions>

<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'linux'">
<ChromeUrl>$(_ChromeBaseSnapshotUrl)/chrome-linux.zip</ChromeUrl>
<ChromeDriverUrl>$(_ChromeBaseSnapshotUrl)/chromedriver_linux64.zip</ChromeDriverUrl>
</PropertyGroup>
<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'win'">
<ChromeUrl>$(_ChromeBaseSnapshotUrl)/chrome-win.zip</ChromeUrl>
<ChromeDriverUrl>$(_ChromeBaseSnapshotUrl)/chromedriver_win32.zip</ChromeDriverUrl>
</PropertyGroup>

<PropertyGroup>
<ChromeStampFile>$([MSBuild]::NormalizePath('$(ChromeDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeStampFile>
<ChromeDriverStampFile>$([MSBuild]::NormalizePath('$(ChromeDriverDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeDriverStampFile>
</PropertyGroup>
</Target>
</Project>
11 changes: 6 additions & 5 deletions src/tasks/WasmBuildTasks/GetChromeVersions.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -24,10 +24,6 @@ public class GetChromeVersions : MBU.Task
private const string s_depsUrlPrefix = $"https://omahaproxy.appspot.com/deps.json?version=";
private const int s_versionCheckThresholdDays = 1;

// start at the branch position found in all.json, and try to
// download chrome, and chromedriver. If not found, then try up to
// s_numBranchPositionsToTry lower versions
private const int s_numBranchPositionsToTry = 50;
private static readonly HttpClient s_httpClient = new();

public string Channel { get; set; } = "stable";
Expand All@@ -44,6 +40,11 @@ public class GetChromeVersions : MBU.Task

public int MaxMajorVersionsToCheck { get; set; } = 2;

// start at the branch position found in all.json, and try to
// download chrome, and chromedriver. If not found, then try up to
// MaxBranchPositionsToCheck lower versions
public int MaxBranchPositionsToCheck { get; set; } = 75;

[Output]
public string ChromeVersion { get; set; } = string.Empty;
[Output]
Expand DownExpand Up@@ -240,7 +241,7 @@ private async Task<Stream> GetDownloadFileStreamAsync(string filename, string ur
string baseUrl = $"{s_snapshotBaseUrl}/{OSPrefix}";

int branchPosition = int.Parse(version.branch_base_position);
for (int i = 0; i < s_numBranchPositionsToTry; i++)
for (int i = 0; i < MaxBranchPositionsToCheck; i++)
{
string branchUrl = $"{baseUrl}/{branchPosition}";
string url = $"{branchUrl}/REVISIONS";
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [wasm] Make chrome version bumps for testing explicit, instead of automatic updates to latest by radical · Pull Request #90772 · dotnet/runtime · GitHub
Skip to content
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
65 changes: 65 additions & 0 deletions .github/workflows/bump-chrome-version.yml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
name: Update Chrome Version used for wasm testing

permissions:
contents: write
pull-requests: write

on:
schedule:
- cron: '0 0 * * 0'

workflow_dispatch:

jobs:
update:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Branch
run: |
git config user.name github-actions[bot]
git config user.email github-actions[bot]@users.noreply.github.com
git checkout -b update-chrome-version-${{ github.run_id }}

- name: Run UpdateToLatestVersion
run: >-
make -C src/mono/wasm build-tasks &&
.dotnet/dotnet build eng/testing/bump-chrome-version.proj -p:Configuration=Release &&
git add eng/testing/ChromeVersions.props

- name: Check for changes
id: check_changes
run: |
echo "has_changes=$(git diff-index --quiet HEAD && echo false || echo true)" >> $GITHUB_OUTPUT

- name: Commit Update
run: |
echo steps.check_changes.outputs.has_changes=${{steps.check_changes.outputs.has_changes}}
if ${{steps.check_changes.outputs.has_changes}} == 'true'; then
git commit -m "Automated bump of chrome version"
git push --set-upstream origin update-chrome-version-${{ github.run_id }}
else
echo "No changes detected."
fi

- name: Create PR
if: steps.check_changes.outputs.has_changes == 'true'
uses: actions/github-script@v6
with:
script: |
const { data: pullRequest } = await github.rest.pulls.create({
base: context.ref,
head: "update-chrome-version-${{ github.run_id }}",
owner: context.repo.owner,
repo: context.repo.repo,
title: '[wasm] Bump chrome version used for testing',
body: ''
});
await github.rest.pulls.requestReviewers({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: pullRequest.number,
reviewers: ["radical"]
});
return pullRequest.number;
6 changes: 3 additions & 3 deletions eng/pipelines/common/evaluate-default-paths.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,7 +6,7 @@ parameters:
# do not set them when using the template
_const_paths:
_wasm_specific_only: [
eng/testing/ProvisioningVersions.props
eng/testing/ChromeVersions.props
eng/testing/WasmRunner*
eng/testing/WasiRunner*
eng/testing/scenarios/BuildWasmAppsJobsList.txt
Expand DownExpand Up@@ -182,7 +182,7 @@ jobs:
include:
- eng/Version.Details.xml
- eng/Versions.props
eng/testing/ProvisioningVersions.props
eng/testing/ChromeVersions.props
- eng/testing/scenarios/BuildWasmAppsJobsList.txt
- eng/testing/workloads-testing.targets
- src/installer/pkg/sfx/Microsoft.NETCore.App/*
Expand DownExpand Up@@ -215,7 +215,7 @@ jobs:
- subset: wasmdebuggertests
combined: true
include:
- eng/testing/ProvisioningVersions.props
- eng/testing/ChromeVersions.props
- src/libraries/System.Runtime.InteropServices/*
- src/libraries/System.Runtime.InteropServices.JavaScript/*
- src/mono/mono/*
Expand Down
11 changes: 11 additions & 0 deletions eng/testing/ChromeVersions.props
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
<Project>
<PropertyGroup>
<linux_ChromeVersion>115.0.5790.170</linux_ChromeVersion>
<linux_ChromeRevision>1148114</linux_ChromeRevision>
<linux_ChromeBaseSnapshotUrl>https://storage.googleapis.com/chromium-browser-snapshots/Linux_x64/1148123</linux_ChromeBaseSnapshotUrl>

<win_ChromeVersion>115.0.5790.171</win_ChromeVersion>
<win_ChromeRevision>1148114</win_ChromeRevision>
<win_ChromeBaseSnapshotUrl>https://storage.googleapis.com/chromium-browser-snapshots/Win_x64/1148119</win_ChromeBaseSnapshotUrl>
</PropertyGroup>
</Project>
68 changes: 0 additions & 68 deletions eng/testing/ProvisioningVersions.props

This file was deleted.

52 changes: 52 additions & 0 deletions eng/testing/bump-chrome-version.proj
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
<Project DefaultTargets="UpdateChromeVersion">

<Import Project="..\Directory.Build.props" />
<UsingTask AssemblyFile="$(WasmBuildTasksAssemblyPath)" TaskName="Microsoft.WebAssembly.Build.Tasks.GetChromeVersions" />

<Target Name="UpdateChromeVersion">
<GetChromeVersions
OSIdentifier="linux"
OSPrefix="Linux_x64"
Channel="$(ChromeChannel)"
MaxMajorVersionsToCheck="1"
IntermediateOutputPath="$(ArtifactsObjDir)">
<Output TaskParameter="ChromeVersion" PropertyName="linux_ChromeVersion" />
<Output TaskParameter="V8Version" PropertyName="linux_V8Version" />
<Output TaskParameter="BranchPosition" PropertyName="linux_ChromeRevision" />
<Output TaskParameter="BaseSnapshotUrl" PropertyName="linux_ChromeBaseSnapshotUrl" />
</GetChromeVersions>

<GetChromeVersions
OSIdentifier="win"
OSPrefix="Win_x64"
Channel="$(ChromeChannel)"
MaxMajorVersionsToCheck="1"
IntermediateOutputPath="$(ArtifactsObjDir)">
<Output TaskParameter="ChromeVersion" PropertyName="win_ChromeVersion" />
<Output TaskParameter="V8Version" PropertyName="win_V8Version" />
<Output TaskParameter="BranchPosition" PropertyName="win_ChromeRevision" />
<Output TaskParameter="BaseSnapshotUrl" PropertyName="win_ChromeBaseSnapshotUrl" />
</GetChromeVersions>

<PropertyGroup>
<_PropsContent>
&lt;Project&gt;
&lt;PropertyGroup&gt;
&lt;linux_ChromeVersion&gt;$(linux_ChromeVersion)&lt;/linux_ChromeVersion&gt;
&lt;linux_ChromeRevision&gt;$(linux_ChromeRevision)&lt;/linux_ChromeRevision&gt;
&lt;linux_ChromeBaseSnapshotUrl&gt;$(linux_ChromeBaseSnapshotUrl)&lt;/linux_ChromeBaseSnapshotUrl&gt;

&lt;win_ChromeVersion&gt;$(win_ChromeVersion)&lt;/win_ChromeVersion&gt;
&lt;win_ChromeRevision&gt;$(win_ChromeRevision)&lt;/win_ChromeRevision&gt;
&lt;win_ChromeBaseSnapshotUrl&gt;$(win_ChromeBaseSnapshotUrl)&lt;/win_ChromeBaseSnapshotUrl&gt;
&lt;/PropertyGroup&gt;
&lt;/Project&gt;
</_PropsContent>
</PropertyGroup>
<Message Text="Writing version props: $(_PropsContent)" Importance="High" />
<WriteLinesToFile Lines="$(_PropsContent)" File="$(RepositoryEngineeringDir)testing\ChromeVersions.props" Overwrite="true" />
</Target>

<Import Project="..\Directory.Build.targets" />

</Project>
95 changes: 59 additions & 36 deletions eng/testing/wasm-provisioning.targets
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,43 @@
<Project>
<Import Project="$(MSBuildThisFileDirectory)ProvisioningVersions.props" />
<PropertyGroup>
<!--
Set ChromeChannel properties to get the latest versions
-->
<ChromeChannel>stable</ChromeChannel>

<ChromeOSIdentifier Condition="$([MSBuild]::IsOSPlatform('windows'))">win</ChromeOSIdentifier>
<ChromeOSIdentifier Condition="$([MSBuild]::IsOSPlatform('linux'))">linux</ChromeOSIdentifier>
<ChromeOSIdentifier Condition="'$(ChromeOSIdentifier)' == ''">unsupported-platform</ChromeOSIdentifier>

<!-- disable by default on unsupported platforms -->
<InstallChromeForTests Condition="'$(InstallChromeForTests)' == '' and '$(ChromeOSIdentifier)' == ''">false</InstallChromeForTests>

<FirefoxDir>$(ArtifactsBinDir)firefox\</FirefoxDir>
<FirefoxStampFile>$([MSBuild]::NormalizePath($(FirefoxDir), '.install-firefox-$(FirefoxRevision).stamp'))</FirefoxStampFile>
<_BrowserStampDir>$(ArtifactsBinDir)\</_BrowserStampDir>
</PropertyGroup>

<Import Project="$(MSBuildThisFileDirectory)ChromeVersions.props" />

<PropertyGroup Condition="'$(BrowserHost)' != 'windows'">
<FirefoxRevision>108.0.1</FirefoxRevision>
<FirefoxUrl>https://ftp.mozilla.org/pub/firefox/releases/$(FirefoxRevision)/linux-x86_64/en-US/firefox-$(FirefoxRevision).tar.bz2</FirefoxUrl>
<FirefoxBinaryName>firefox</FirefoxBinaryName>
</PropertyGroup>

<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'linux'">
<ChromeDirName>chrome-linux</ChromeDirName>
<ChromeDriverDirName>chromedriver_linux64</ChromeDriverDirName>
<ChromeBinaryName>chrome</ChromeBinaryName>
<ChromeDriverBinaryName>chromedriver</ChromeDriverBinaryName>
<_ChromeOSPrefix>Linux_x64</_ChromeOSPrefix>

<ChromeVersion>$(linux_ChromeVersion)</ChromeVersion>
<ChromeRevision>$(linux_ChromeRevision)</ChromeRevision>
<_ChromeBaseSnapshotUrl>$(linux_ChromeBaseSnapshotUrl)</_ChromeBaseSnapshotUrl>

<ChromeUrl>$(linux_ChromeBaseSnapshotUrl)/chrome-linux.zip</ChromeUrl>
<ChromeDriverUrl>$(linux_ChromeBaseSnapshotUrl)/chromedriver_linux64.zip</ChromeDriverUrl>
</PropertyGroup>

<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'win'">
Expand All@@ -15,18 +46,38 @@
<ChromeBinaryName>chrome.exe</ChromeBinaryName>
<ChromeDriverBinaryName>chromedriver.exe</ChromeDriverBinaryName>
<_ChromeOSPrefix>Win_x64</_ChromeOSPrefix>

<ChromeVersion>$(win_ChromeVersion)</ChromeVersion>
<ChromeRevision>$(win_ChromeRevision)</ChromeRevision>
<_ChromeBaseSnapshotUrl>$(win_ChromeBaseSnapshotUrl)</_ChromeBaseSnapshotUrl>

<ChromeUrl>$(win_ChromeBaseSnapshotUrl)/chrome-win.zip</ChromeUrl>
<ChromeDriverUrl>$(win_ChromeBaseSnapshotUrl)/chromedriver_win32.zip</ChromeDriverUrl>
</PropertyGroup>

<PropertyGroup>
<_BrowserStampDir>$(ArtifactsBinDir)\</_BrowserStampDir>
<PropertyGroup Condition="'$(ChromeVersion)' != ''">
<ChromeDir>$(ArtifactsBinDir)chrome\</ChromeDir>
<ChromeDriverDir>$(ArtifactsBinDir)chromedriver\</ChromeDriverDir>
<ChromeStampFile>$([MSBuild]::NormalizePath('$(ChromeDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeStampFile>
<ChromeDriverStampFile>$([MSBuild]::NormalizePath('$(ChromeDriverDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeDriverStampFile>

<ChromeBinaryPath>$([MSBuild]::NormalizePath($(ChromeDir), $(ChromeDirName), $(ChromeBinaryName)))</ChromeBinaryPath>
<ChromeDriverBinaryPath>$([MSBuild]::NormalizePath($(ChromeDriverDir), $(ChromeDriverDirName), $(ChromeDriverBinaryName)))</ChromeDriverBinaryPath>
</PropertyGroup>

<PropertyGroup Condition="'$(BrowserHost)' != 'windows'">
<FirefoxRevision>108.0.1</FirefoxRevision>
<FirefoxUrl>https://ftp.mozilla.org/pub/firefox/releases/$(FirefoxRevision)/linux-x86_64/en-US/firefox-$(FirefoxRevision).tar.bz2</FirefoxUrl>
<FirefoxBinaryName>firefox</FirefoxBinaryName>
</PropertyGroup>

<Target Name="DownloadAndInstallChrome"
AfterTargets="GetChromeVersion"
AfterTargets="Build"
Condition="(!Exists($(ChromeStampFile)) or !Exists($(ChromeBinaryPath))) and '$(InstallChromeForTests)' == 'true'">

<Error Condition="'$(ChromeVersion)' == ''"
Text="No %24(ChromeVersion) set. This can be set in eng/testing/ChromeVersions.props" />

<RemoveDir Directories="$(ChromeDir)" />

<Message Text="** Installing chrome version $(ChromeVersion), rev: $(ChromeRevision). To disable this set the msuild property InstallChromeForTests=false ."
Expand All@@ -46,9 +97,12 @@
</Target>

<Target Name="DownloadAndInstallChromeDriver"
AfterTargets="GetChromeVersion"
AfterTargets="Build"
Condition="(!Exists($(ChromeDriverStampFile)) or !Exists($(ChromeDriverBinaryPath))) and '$(InstallChromeForTests)' == 'true'">

<Error Condition="'$(ChromeVersion)' == ''"
Text="No %24(ChromeVersion) set. This can be set in eng/testing/ChromeVersions.props" />

<RemoveDir Directories="$(ChromeDriverDir)" />

<Message Text="** Installing chromedriver version $(ChromeVersion), rev: $(ChromeRevision). To disable this set the msuild property InstallChromeForTests=false ."
Expand DownExpand Up@@ -94,35 +148,4 @@

<Touch Files="$(FirefoxStampFile)" AlwaysCreate="true" />
</Target>

<UsingTask AssemblyFile="$(WasmBuildTasksAssemblyPath)"
TaskName="Microsoft.WebAssembly.Build.Tasks.GetChromeVersions" />

<Target Name="GetChromeVersion" AfterTargets="Build" Condition="'$(InstallChromeForTests)' == 'true'">
<GetChromeVersions
Condition="'$(ChromeVersion)' == ''"
OSIdentifier="$(ChromeOSIdentifier)"
OSPrefix="$(_ChromeOSPrefix)"
Channel="$(ChromeChannel)"
IntermediateOutputPath="$(ArtifactsObjDir)">
<Output TaskParameter="ChromeVersion" PropertyName="ChromeVersion" />
<Output TaskParameter="V8Version" PropertyName="V8Version" />
<Output TaskParameter="BranchPosition" PropertyName="ChromeRevision" />
<Output TaskParameter="BaseSnapshotUrl" PropertyName="_ChromeBaseSnapshotUrl" />
</GetChromeVersions>

<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'linux'">
<ChromeUrl>$(_ChromeBaseSnapshotUrl)/chrome-linux.zip</ChromeUrl>
<ChromeDriverUrl>$(_ChromeBaseSnapshotUrl)/chromedriver_linux64.zip</ChromeDriverUrl>
</PropertyGroup>
<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'win'">
<ChromeUrl>$(_ChromeBaseSnapshotUrl)/chrome-win.zip</ChromeUrl>
<ChromeDriverUrl>$(_ChromeBaseSnapshotUrl)/chromedriver_win32.zip</ChromeDriverUrl>
</PropertyGroup>

<PropertyGroup>
<ChromeStampFile>$([MSBuild]::NormalizePath('$(ChromeDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeStampFile>
<ChromeDriverStampFile>$([MSBuild]::NormalizePath('$(ChromeDriverDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeDriverStampFile>
</PropertyGroup>
</Target>
</Project>
11 changes: 6 additions & 5 deletions src/tasks/WasmBuildTasks/GetChromeVersions.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -24,10 +24,6 @@ public class GetChromeVersions : MBU.Task
private const string s_depsUrlPrefix = $"https://omahaproxy.appspot.com/deps.json?version=";
private const int s_versionCheckThresholdDays = 1;

// start at the branch position found in all.json, and try to
// download chrome, and chromedriver. If not found, then try up to
// s_numBranchPositionsToTry lower versions
private const int s_numBranchPositionsToTry = 50;
private static readonly HttpClient s_httpClient = new();

public string Channel { get; set; } = "stable";
Expand All@@ -44,6 +40,11 @@ public class GetChromeVersions : MBU.Task

public int MaxMajorVersionsToCheck { get; set; } = 2;

// start at the branch position found in all.json, and try to
// download chrome, and chromedriver. If not found, then try up to
// MaxBranchPositionsToCheck lower versions
public int MaxBranchPositionsToCheck { get; set; } = 75;

[Output]
public string ChromeVersion { get; set; } = string.Empty;
[Output]
Expand DownExpand Up@@ -240,7 +241,7 @@ private async Task<Stream> GetDownloadFileStreamAsync(string filename, string ur
string baseUrl = $"{s_snapshotBaseUrl}/{OSPrefix}";

int branchPosition = int.Parse(version.branch_base_position);
for (int i = 0; i < s_numBranchPositionsToTry; i++)
for (int i = 0; i < MaxBranchPositionsToCheck; i++)
{
string branchUrl = $"{baseUrl}/{branchPosition}";
string url = $"{branchUrl}/REVISIONS";
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [wasm] Make chrome version bumps for testing explicit, instead of automatic updates to latest by radical · Pull Request #90772 · dotnet/runtime · GitHub
Skip to content
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
65 changes: 65 additions & 0 deletions .github/workflows/bump-chrome-version.yml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
name: Update Chrome Version used for wasm testing

permissions:
contents: write
pull-requests: write

on:
schedule:
- cron: '0 0 * * 0'

workflow_dispatch:

jobs:
update:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Branch
run: |
git config user.name github-actions[bot]
git config user.email github-actions[bot]@users.noreply.github.com
git checkout -b update-chrome-version-${{ github.run_id }}

- name: Run UpdateToLatestVersion
run: >-
make -C src/mono/wasm build-tasks &&
.dotnet/dotnet build eng/testing/bump-chrome-version.proj -p:Configuration=Release &&
git add eng/testing/ChromeVersions.props

- name: Check for changes
id: check_changes
run: |
echo "has_changes=$(git diff-index --quiet HEAD && echo false || echo true)" >> $GITHUB_OUTPUT

- name: Commit Update
run: |
echo steps.check_changes.outputs.has_changes=${{steps.check_changes.outputs.has_changes}}
if ${{steps.check_changes.outputs.has_changes}} == 'true'; then
git commit -m "Automated bump of chrome version"
git push --set-upstream origin update-chrome-version-${{ github.run_id }}
else
echo "No changes detected."
fi

- name: Create PR
if: steps.check_changes.outputs.has_changes == 'true'
uses: actions/github-script@v6
with:
script: |
const { data: pullRequest } = await github.rest.pulls.create({
base: context.ref,
head: "update-chrome-version-${{ github.run_id }}",
owner: context.repo.owner,
repo: context.repo.repo,
title: '[wasm] Bump chrome version used for testing',
body: ''
});
await github.rest.pulls.requestReviewers({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: pullRequest.number,
reviewers: ["radical"]
});
return pullRequest.number;
6 changes: 3 additions & 3 deletions eng/pipelines/common/evaluate-default-paths.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,7 +6,7 @@ parameters:
# do not set them when using the template
_const_paths:
_wasm_specific_only: [
eng/testing/ProvisioningVersions.props
eng/testing/ChromeVersions.props
eng/testing/WasmRunner*
eng/testing/WasiRunner*
eng/testing/scenarios/BuildWasmAppsJobsList.txt
Expand DownExpand Up@@ -182,7 +182,7 @@ jobs:
include:
- eng/Version.Details.xml
- eng/Versions.props
eng/testing/ProvisioningVersions.props
eng/testing/ChromeVersions.props
- eng/testing/scenarios/BuildWasmAppsJobsList.txt
- eng/testing/workloads-testing.targets
- src/installer/pkg/sfx/Microsoft.NETCore.App/*
Expand DownExpand Up@@ -215,7 +215,7 @@ jobs:
- subset: wasmdebuggertests
combined: true
include:
- eng/testing/ProvisioningVersions.props
- eng/testing/ChromeVersions.props
- src/libraries/System.Runtime.InteropServices/*
- src/libraries/System.Runtime.InteropServices.JavaScript/*
- src/mono/mono/*
Expand Down
11 changes: 11 additions & 0 deletions eng/testing/ChromeVersions.props
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
<Project>
<PropertyGroup>
<linux_ChromeVersion>115.0.5790.170</linux_ChromeVersion>
<linux_ChromeRevision>1148114</linux_ChromeRevision>
<linux_ChromeBaseSnapshotUrl>https://storage.googleapis.com/chromium-browser-snapshots/Linux_x64/1148123</linux_ChromeBaseSnapshotUrl>

<win_ChromeVersion>115.0.5790.171</win_ChromeVersion>
<win_ChromeRevision>1148114</win_ChromeRevision>
<win_ChromeBaseSnapshotUrl>https://storage.googleapis.com/chromium-browser-snapshots/Win_x64/1148119</win_ChromeBaseSnapshotUrl>
</PropertyGroup>
</Project>
68 changes: 0 additions & 68 deletions eng/testing/ProvisioningVersions.props

This file was deleted.

52 changes: 52 additions & 0 deletions eng/testing/bump-chrome-version.proj
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
<Project DefaultTargets="UpdateChromeVersion">

<Import Project="..\Directory.Build.props" />
<UsingTask AssemblyFile="$(WasmBuildTasksAssemblyPath)" TaskName="Microsoft.WebAssembly.Build.Tasks.GetChromeVersions" />

<Target Name="UpdateChromeVersion">
<GetChromeVersions
OSIdentifier="linux"
OSPrefix="Linux_x64"
Channel="$(ChromeChannel)"
MaxMajorVersionsToCheck="1"
IntermediateOutputPath="$(ArtifactsObjDir)">
<Output TaskParameter="ChromeVersion" PropertyName="linux_ChromeVersion" />
<Output TaskParameter="V8Version" PropertyName="linux_V8Version" />
<Output TaskParameter="BranchPosition" PropertyName="linux_ChromeRevision" />
<Output TaskParameter="BaseSnapshotUrl" PropertyName="linux_ChromeBaseSnapshotUrl" />
</GetChromeVersions>

<GetChromeVersions
OSIdentifier="win"
OSPrefix="Win_x64"
Channel="$(ChromeChannel)"
MaxMajorVersionsToCheck="1"
IntermediateOutputPath="$(ArtifactsObjDir)">
<Output TaskParameter="ChromeVersion" PropertyName="win_ChromeVersion" />
<Output TaskParameter="V8Version" PropertyName="win_V8Version" />
<Output TaskParameter="BranchPosition" PropertyName="win_ChromeRevision" />
<Output TaskParameter="BaseSnapshotUrl" PropertyName="win_ChromeBaseSnapshotUrl" />
</GetChromeVersions>

<PropertyGroup>
<_PropsContent>
&lt;Project&gt;
&lt;PropertyGroup&gt;
&lt;linux_ChromeVersion&gt;$(linux_ChromeVersion)&lt;/linux_ChromeVersion&gt;
&lt;linux_ChromeRevision&gt;$(linux_ChromeRevision)&lt;/linux_ChromeRevision&gt;
&lt;linux_ChromeBaseSnapshotUrl&gt;$(linux_ChromeBaseSnapshotUrl)&lt;/linux_ChromeBaseSnapshotUrl&gt;

&lt;win_ChromeVersion&gt;$(win_ChromeVersion)&lt;/win_ChromeVersion&gt;
&lt;win_ChromeRevision&gt;$(win_ChromeRevision)&lt;/win_ChromeRevision&gt;
&lt;win_ChromeBaseSnapshotUrl&gt;$(win_ChromeBaseSnapshotUrl)&lt;/win_ChromeBaseSnapshotUrl&gt;
&lt;/PropertyGroup&gt;
&lt;/Project&gt;
</_PropsContent>
</PropertyGroup>
<Message Text="Writing version props: $(_PropsContent)" Importance="High" />
<WriteLinesToFile Lines="$(_PropsContent)" File="$(RepositoryEngineeringDir)testing\ChromeVersions.props" Overwrite="true" />
</Target>

<Import Project="..\Directory.Build.targets" />

</Project>
95 changes: 59 additions & 36 deletions eng/testing/wasm-provisioning.targets
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,43 @@
<Project>
<Import Project="$(MSBuildThisFileDirectory)ProvisioningVersions.props" />
<PropertyGroup>
<!--
Set ChromeChannel properties to get the latest versions
-->
<ChromeChannel>stable</ChromeChannel>

<ChromeOSIdentifier Condition="$([MSBuild]::IsOSPlatform('windows'))">win</ChromeOSIdentifier>
<ChromeOSIdentifier Condition="$([MSBuild]::IsOSPlatform('linux'))">linux</ChromeOSIdentifier>
<ChromeOSIdentifier Condition="'$(ChromeOSIdentifier)' == ''">unsupported-platform</ChromeOSIdentifier>

<!-- disable by default on unsupported platforms -->
<InstallChromeForTests Condition="'$(InstallChromeForTests)' == '' and '$(ChromeOSIdentifier)' == ''">false</InstallChromeForTests>

<FirefoxDir>$(ArtifactsBinDir)firefox\</FirefoxDir>
<FirefoxStampFile>$([MSBuild]::NormalizePath($(FirefoxDir), '.install-firefox-$(FirefoxRevision).stamp'))</FirefoxStampFile>
<_BrowserStampDir>$(ArtifactsBinDir)\</_BrowserStampDir>
</PropertyGroup>

<Import Project="$(MSBuildThisFileDirectory)ChromeVersions.props" />

<PropertyGroup Condition="'$(BrowserHost)' != 'windows'">
<FirefoxRevision>108.0.1</FirefoxRevision>
<FirefoxUrl>https://ftp.mozilla.org/pub/firefox/releases/$(FirefoxRevision)/linux-x86_64/en-US/firefox-$(FirefoxRevision).tar.bz2</FirefoxUrl>
<FirefoxBinaryName>firefox</FirefoxBinaryName>
</PropertyGroup>

<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'linux'">
<ChromeDirName>chrome-linux</ChromeDirName>
<ChromeDriverDirName>chromedriver_linux64</ChromeDriverDirName>
<ChromeBinaryName>chrome</ChromeBinaryName>
<ChromeDriverBinaryName>chromedriver</ChromeDriverBinaryName>
<_ChromeOSPrefix>Linux_x64</_ChromeOSPrefix>

<ChromeVersion>$(linux_ChromeVersion)</ChromeVersion>
<ChromeRevision>$(linux_ChromeRevision)</ChromeRevision>
<_ChromeBaseSnapshotUrl>$(linux_ChromeBaseSnapshotUrl)</_ChromeBaseSnapshotUrl>

<ChromeUrl>$(linux_ChromeBaseSnapshotUrl)/chrome-linux.zip</ChromeUrl>
<ChromeDriverUrl>$(linux_ChromeBaseSnapshotUrl)/chromedriver_linux64.zip</ChromeDriverUrl>
</PropertyGroup>

<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'win'">
Expand All@@ -15,18 +46,38 @@
<ChromeBinaryName>chrome.exe</ChromeBinaryName>
<ChromeDriverBinaryName>chromedriver.exe</ChromeDriverBinaryName>
<_ChromeOSPrefix>Win_x64</_ChromeOSPrefix>

<ChromeVersion>$(win_ChromeVersion)</ChromeVersion>
<ChromeRevision>$(win_ChromeRevision)</ChromeRevision>
<_ChromeBaseSnapshotUrl>$(win_ChromeBaseSnapshotUrl)</_ChromeBaseSnapshotUrl>

<ChromeUrl>$(win_ChromeBaseSnapshotUrl)/chrome-win.zip</ChromeUrl>
<ChromeDriverUrl>$(win_ChromeBaseSnapshotUrl)/chromedriver_win32.zip</ChromeDriverUrl>
</PropertyGroup>

<PropertyGroup>
<_BrowserStampDir>$(ArtifactsBinDir)\</_BrowserStampDir>
<PropertyGroup Condition="'$(ChromeVersion)' != ''">
<ChromeDir>$(ArtifactsBinDir)chrome\</ChromeDir>
<ChromeDriverDir>$(ArtifactsBinDir)chromedriver\</ChromeDriverDir>
<ChromeStampFile>$([MSBuild]::NormalizePath('$(ChromeDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeStampFile>
<ChromeDriverStampFile>$([MSBuild]::NormalizePath('$(ChromeDriverDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeDriverStampFile>

<ChromeBinaryPath>$([MSBuild]::NormalizePath($(ChromeDir), $(ChromeDirName), $(ChromeBinaryName)))</ChromeBinaryPath>
<ChromeDriverBinaryPath>$([MSBuild]::NormalizePath($(ChromeDriverDir), $(ChromeDriverDirName), $(ChromeDriverBinaryName)))</ChromeDriverBinaryPath>
</PropertyGroup>

<PropertyGroup Condition="'$(BrowserHost)' != 'windows'">
<FirefoxRevision>108.0.1</FirefoxRevision>
<FirefoxUrl>https://ftp.mozilla.org/pub/firefox/releases/$(FirefoxRevision)/linux-x86_64/en-US/firefox-$(FirefoxRevision).tar.bz2</FirefoxUrl>
<FirefoxBinaryName>firefox</FirefoxBinaryName>
</PropertyGroup>

<Target Name="DownloadAndInstallChrome"
AfterTargets="GetChromeVersion"
AfterTargets="Build"
Condition="(!Exists($(ChromeStampFile)) or !Exists($(ChromeBinaryPath))) and '$(InstallChromeForTests)' == 'true'">

<Error Condition="'$(ChromeVersion)' == ''"
Text="No %24(ChromeVersion) set. This can be set in eng/testing/ChromeVersions.props" />

<RemoveDir Directories="$(ChromeDir)" />

<Message Text="** Installing chrome version $(ChromeVersion), rev: $(ChromeRevision). To disable this set the msuild property InstallChromeForTests=false ."
Expand All@@ -46,9 +97,12 @@
</Target>

<Target Name="DownloadAndInstallChromeDriver"
AfterTargets="GetChromeVersion"
AfterTargets="Build"
Condition="(!Exists($(ChromeDriverStampFile)) or !Exists($(ChromeDriverBinaryPath))) and '$(InstallChromeForTests)' == 'true'">

<Error Condition="'$(ChromeVersion)' == ''"
Text="No %24(ChromeVersion) set. This can be set in eng/testing/ChromeVersions.props" />

<RemoveDir Directories="$(ChromeDriverDir)" />

<Message Text="** Installing chromedriver version $(ChromeVersion), rev: $(ChromeRevision). To disable this set the msuild property InstallChromeForTests=false ."
Expand DownExpand Up@@ -94,35 +148,4 @@

<Touch Files="$(FirefoxStampFile)" AlwaysCreate="true" />
</Target>

<UsingTask AssemblyFile="$(WasmBuildTasksAssemblyPath)"
TaskName="Microsoft.WebAssembly.Build.Tasks.GetChromeVersions" />

<Target Name="GetChromeVersion" AfterTargets="Build" Condition="'$(InstallChromeForTests)' == 'true'">
<GetChromeVersions
Condition="'$(ChromeVersion)' == ''"
OSIdentifier="$(ChromeOSIdentifier)"
OSPrefix="$(_ChromeOSPrefix)"
Channel="$(ChromeChannel)"
IntermediateOutputPath="$(ArtifactsObjDir)">
<Output TaskParameter="ChromeVersion" PropertyName="ChromeVersion" />
<Output TaskParameter="V8Version" PropertyName="V8Version" />
<Output TaskParameter="BranchPosition" PropertyName="ChromeRevision" />
<Output TaskParameter="BaseSnapshotUrl" PropertyName="_ChromeBaseSnapshotUrl" />
</GetChromeVersions>

<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'linux'">
<ChromeUrl>$(_ChromeBaseSnapshotUrl)/chrome-linux.zip</ChromeUrl>
<ChromeDriverUrl>$(_ChromeBaseSnapshotUrl)/chromedriver_linux64.zip</ChromeDriverUrl>
</PropertyGroup>
<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'win'">
<ChromeUrl>$(_ChromeBaseSnapshotUrl)/chrome-win.zip</ChromeUrl>
<ChromeDriverUrl>$(_ChromeBaseSnapshotUrl)/chromedriver_win32.zip</ChromeDriverUrl>
</PropertyGroup>

<PropertyGroup>
<ChromeStampFile>$([MSBuild]::NormalizePath('$(ChromeDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeStampFile>
<ChromeDriverStampFile>$([MSBuild]::NormalizePath('$(ChromeDriverDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeDriverStampFile>
</PropertyGroup>
</Target>
</Project>
11 changes: 6 additions & 5 deletions src/tasks/WasmBuildTasks/GetChromeVersions.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -24,10 +24,6 @@ public class GetChromeVersions : MBU.Task
private const string s_depsUrlPrefix = $"https://omahaproxy.appspot.com/deps.json?version=";
private const int s_versionCheckThresholdDays = 1;

// start at the branch position found in all.json, and try to
// download chrome, and chromedriver. If not found, then try up to
// s_numBranchPositionsToTry lower versions
private const int s_numBranchPositionsToTry = 50;
private static readonly HttpClient s_httpClient = new();

public string Channel { get; set; } = "stable";
Expand All@@ -44,6 +40,11 @@ public class GetChromeVersions : MBU.Task

public int MaxMajorVersionsToCheck { get; set; } = 2;

// start at the branch position found in all.json, and try to
// download chrome, and chromedriver. If not found, then try up to
// MaxBranchPositionsToCheck lower versions
public int MaxBranchPositionsToCheck { get; set; } = 75;

[Output]
public string ChromeVersion { get; set; } = string.Empty;
[Output]
Expand DownExpand Up@@ -240,7 +241,7 @@ private async Task<Stream> GetDownloadFileStreamAsync(string filename, string ur
string baseUrl = $"{s_snapshotBaseUrl}/{OSPrefix}";

int branchPosition = int.Parse(version.branch_base_position);
for (int i = 0; i < s_numBranchPositionsToTry; i++)
for (int i = 0; i < MaxBranchPositionsToCheck; i++)
{
string branchUrl = $"{baseUrl}/{branchPosition}";
string url = $"{branchUrl}/REVISIONS";
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); [wasm] Make chrome version bumps for testing explicit, instead of automatic updates to latest by radical · Pull Request #90772 · dotnet/runtime · GitHub
Skip to content
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
65 changes: 65 additions & 0 deletions .github/workflows/bump-chrome-version.yml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
name: Update Chrome Version used for wasm testing

permissions:
contents: write
pull-requests: write

on:
schedule:
- cron: '0 0 * * 0'

workflow_dispatch:

jobs:
update:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Branch
run: |
git config user.name github-actions[bot]
git config user.email github-actions[bot]@users.noreply.github.com
git checkout -b update-chrome-version-${{ github.run_id }}

- name: Run UpdateToLatestVersion
run: >-
make -C src/mono/wasm build-tasks &&
.dotnet/dotnet build eng/testing/bump-chrome-version.proj -p:Configuration=Release &&
git add eng/testing/ChromeVersions.props

- name: Check for changes
id: check_changes
run: |
echo "has_changes=$(git diff-index --quiet HEAD && echo false || echo true)" >> $GITHUB_OUTPUT

- name: Commit Update
run: |
echo steps.check_changes.outputs.has_changes=${{steps.check_changes.outputs.has_changes}}
if ${{steps.check_changes.outputs.has_changes}} == 'true'; then
git commit -m "Automated bump of chrome version"
git push --set-upstream origin update-chrome-version-${{ github.run_id }}
else
echo "No changes detected."
fi

- name: Create PR
if: steps.check_changes.outputs.has_changes == 'true'
uses: actions/github-script@v6
with:
script: |
const { data: pullRequest } = await github.rest.pulls.create({
base: context.ref,
head: "update-chrome-version-${{ github.run_id }}",
owner: context.repo.owner,
repo: context.repo.repo,
title: '[wasm] Bump chrome version used for testing',
body: ''
});
await github.rest.pulls.requestReviewers({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: pullRequest.number,
reviewers: ["radical"]
});
return pullRequest.number;
6 changes: 3 additions & 3 deletions eng/pipelines/common/evaluate-default-paths.yml
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,7 +6,7 @@ parameters:
# do not set them when using the template
_const_paths:
_wasm_specific_only: [
eng/testing/ProvisioningVersions.props
eng/testing/ChromeVersions.props
eng/testing/WasmRunner*
eng/testing/WasiRunner*
eng/testing/scenarios/BuildWasmAppsJobsList.txt
Expand DownExpand Up@@ -182,7 +182,7 @@ jobs:
include:
- eng/Version.Details.xml
- eng/Versions.props
eng/testing/ProvisioningVersions.props
eng/testing/ChromeVersions.props
- eng/testing/scenarios/BuildWasmAppsJobsList.txt
- eng/testing/workloads-testing.targets
- src/installer/pkg/sfx/Microsoft.NETCore.App/*
Expand DownExpand Up@@ -215,7 +215,7 @@ jobs:
- subset: wasmdebuggertests
combined: true
include:
- eng/testing/ProvisioningVersions.props
- eng/testing/ChromeVersions.props
- src/libraries/System.Runtime.InteropServices/*
- src/libraries/System.Runtime.InteropServices.JavaScript/*
- src/mono/mono/*
Expand Down
11 changes: 11 additions & 0 deletions eng/testing/ChromeVersions.props
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
<Project>
<PropertyGroup>
<linux_ChromeVersion>115.0.5790.170</linux_ChromeVersion>
<linux_ChromeRevision>1148114</linux_ChromeRevision>
<linux_ChromeBaseSnapshotUrl>https://storage.googleapis.com/chromium-browser-snapshots/Linux_x64/1148123</linux_ChromeBaseSnapshotUrl>

<win_ChromeVersion>115.0.5790.171</win_ChromeVersion>
<win_ChromeRevision>1148114</win_ChromeRevision>
<win_ChromeBaseSnapshotUrl>https://storage.googleapis.com/chromium-browser-snapshots/Win_x64/1148119</win_ChromeBaseSnapshotUrl>
</PropertyGroup>
</Project>
68 changes: 0 additions & 68 deletions eng/testing/ProvisioningVersions.props

This file was deleted.

52 changes: 52 additions & 0 deletions eng/testing/bump-chrome-version.proj
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
<Project DefaultTargets="UpdateChromeVersion">

<Import Project="..\Directory.Build.props" />
<UsingTask AssemblyFile="$(WasmBuildTasksAssemblyPath)" TaskName="Microsoft.WebAssembly.Build.Tasks.GetChromeVersions" />

<Target Name="UpdateChromeVersion">
<GetChromeVersions
OSIdentifier="linux"
OSPrefix="Linux_x64"
Channel="$(ChromeChannel)"
MaxMajorVersionsToCheck="1"
IntermediateOutputPath="$(ArtifactsObjDir)">
<Output TaskParameter="ChromeVersion" PropertyName="linux_ChromeVersion" />
<Output TaskParameter="V8Version" PropertyName="linux_V8Version" />
<Output TaskParameter="BranchPosition" PropertyName="linux_ChromeRevision" />
<Output TaskParameter="BaseSnapshotUrl" PropertyName="linux_ChromeBaseSnapshotUrl" />
</GetChromeVersions>

<GetChromeVersions
OSIdentifier="win"
OSPrefix="Win_x64"
Channel="$(ChromeChannel)"
MaxMajorVersionsToCheck="1"
IntermediateOutputPath="$(ArtifactsObjDir)">
<Output TaskParameter="ChromeVersion" PropertyName="win_ChromeVersion" />
<Output TaskParameter="V8Version" PropertyName="win_V8Version" />
<Output TaskParameter="BranchPosition" PropertyName="win_ChromeRevision" />
<Output TaskParameter="BaseSnapshotUrl" PropertyName="win_ChromeBaseSnapshotUrl" />
</GetChromeVersions>

<PropertyGroup>
<_PropsContent>
&lt;Project&gt;
&lt;PropertyGroup&gt;
&lt;linux_ChromeVersion&gt;$(linux_ChromeVersion)&lt;/linux_ChromeVersion&gt;
&lt;linux_ChromeRevision&gt;$(linux_ChromeRevision)&lt;/linux_ChromeRevision&gt;
&lt;linux_ChromeBaseSnapshotUrl&gt;$(linux_ChromeBaseSnapshotUrl)&lt;/linux_ChromeBaseSnapshotUrl&gt;

&lt;win_ChromeVersion&gt;$(win_ChromeVersion)&lt;/win_ChromeVersion&gt;
&lt;win_ChromeRevision&gt;$(win_ChromeRevision)&lt;/win_ChromeRevision&gt;
&lt;win_ChromeBaseSnapshotUrl&gt;$(win_ChromeBaseSnapshotUrl)&lt;/win_ChromeBaseSnapshotUrl&gt;
&lt;/PropertyGroup&gt;
&lt;/Project&gt;
</_PropsContent>
</PropertyGroup>
<Message Text="Writing version props: $(_PropsContent)" Importance="High" />
<WriteLinesToFile Lines="$(_PropsContent)" File="$(RepositoryEngineeringDir)testing\ChromeVersions.props" Overwrite="true" />
</Target>

<Import Project="..\Directory.Build.targets" />

</Project>
95 changes: 59 additions & 36 deletions eng/testing/wasm-provisioning.targets
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,43 @@
<Project>
<Import Project="$(MSBuildThisFileDirectory)ProvisioningVersions.props" />
<PropertyGroup>
<!--
Set ChromeChannel properties to get the latest versions
-->
<ChromeChannel>stable</ChromeChannel>

<ChromeOSIdentifier Condition="$([MSBuild]::IsOSPlatform('windows'))">win</ChromeOSIdentifier>
<ChromeOSIdentifier Condition="$([MSBuild]::IsOSPlatform('linux'))">linux</ChromeOSIdentifier>
<ChromeOSIdentifier Condition="'$(ChromeOSIdentifier)' == ''">unsupported-platform</ChromeOSIdentifier>

<!-- disable by default on unsupported platforms -->
<InstallChromeForTests Condition="'$(InstallChromeForTests)' == '' and '$(ChromeOSIdentifier)' == ''">false</InstallChromeForTests>

<FirefoxDir>$(ArtifactsBinDir)firefox\</FirefoxDir>
<FirefoxStampFile>$([MSBuild]::NormalizePath($(FirefoxDir), '.install-firefox-$(FirefoxRevision).stamp'))</FirefoxStampFile>
<_BrowserStampDir>$(ArtifactsBinDir)\</_BrowserStampDir>
</PropertyGroup>

<Import Project="$(MSBuildThisFileDirectory)ChromeVersions.props" />

<PropertyGroup Condition="'$(BrowserHost)' != 'windows'">
<FirefoxRevision>108.0.1</FirefoxRevision>
<FirefoxUrl>https://ftp.mozilla.org/pub/firefox/releases/$(FirefoxRevision)/linux-x86_64/en-US/firefox-$(FirefoxRevision).tar.bz2</FirefoxUrl>
<FirefoxBinaryName>firefox</FirefoxBinaryName>
</PropertyGroup>

<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'linux'">
<ChromeDirName>chrome-linux</ChromeDirName>
<ChromeDriverDirName>chromedriver_linux64</ChromeDriverDirName>
<ChromeBinaryName>chrome</ChromeBinaryName>
<ChromeDriverBinaryName>chromedriver</ChromeDriverBinaryName>
<_ChromeOSPrefix>Linux_x64</_ChromeOSPrefix>

<ChromeVersion>$(linux_ChromeVersion)</ChromeVersion>
<ChromeRevision>$(linux_ChromeRevision)</ChromeRevision>
<_ChromeBaseSnapshotUrl>$(linux_ChromeBaseSnapshotUrl)</_ChromeBaseSnapshotUrl>

<ChromeUrl>$(linux_ChromeBaseSnapshotUrl)/chrome-linux.zip</ChromeUrl>
<ChromeDriverUrl>$(linux_ChromeBaseSnapshotUrl)/chromedriver_linux64.zip</ChromeDriverUrl>
</PropertyGroup>

<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'win'">
Expand All@@ -15,18 +46,38 @@
<ChromeBinaryName>chrome.exe</ChromeBinaryName>
<ChromeDriverBinaryName>chromedriver.exe</ChromeDriverBinaryName>
<_ChromeOSPrefix>Win_x64</_ChromeOSPrefix>

<ChromeVersion>$(win_ChromeVersion)</ChromeVersion>
<ChromeRevision>$(win_ChromeRevision)</ChromeRevision>
<_ChromeBaseSnapshotUrl>$(win_ChromeBaseSnapshotUrl)</_ChromeBaseSnapshotUrl>

<ChromeUrl>$(win_ChromeBaseSnapshotUrl)/chrome-win.zip</ChromeUrl>
<ChromeDriverUrl>$(win_ChromeBaseSnapshotUrl)/chromedriver_win32.zip</ChromeDriverUrl>
</PropertyGroup>

<PropertyGroup>
<_BrowserStampDir>$(ArtifactsBinDir)\</_BrowserStampDir>
<PropertyGroup Condition="'$(ChromeVersion)' != ''">
<ChromeDir>$(ArtifactsBinDir)chrome\</ChromeDir>
<ChromeDriverDir>$(ArtifactsBinDir)chromedriver\</ChromeDriverDir>
<ChromeStampFile>$([MSBuild]::NormalizePath('$(ChromeDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeStampFile>
<ChromeDriverStampFile>$([MSBuild]::NormalizePath('$(ChromeDriverDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeDriverStampFile>

<ChromeBinaryPath>$([MSBuild]::NormalizePath($(ChromeDir), $(ChromeDirName), $(ChromeBinaryName)))</ChromeBinaryPath>
<ChromeDriverBinaryPath>$([MSBuild]::NormalizePath($(ChromeDriverDir), $(ChromeDriverDirName), $(ChromeDriverBinaryName)))</ChromeDriverBinaryPath>
</PropertyGroup>

<PropertyGroup Condition="'$(BrowserHost)' != 'windows'">
<FirefoxRevision>108.0.1</FirefoxRevision>
<FirefoxUrl>https://ftp.mozilla.org/pub/firefox/releases/$(FirefoxRevision)/linux-x86_64/en-US/firefox-$(FirefoxRevision).tar.bz2</FirefoxUrl>
<FirefoxBinaryName>firefox</FirefoxBinaryName>
</PropertyGroup>

<Target Name="DownloadAndInstallChrome"
AfterTargets="GetChromeVersion"
AfterTargets="Build"
Condition="(!Exists($(ChromeStampFile)) or !Exists($(ChromeBinaryPath))) and '$(InstallChromeForTests)' == 'true'">

<Error Condition="'$(ChromeVersion)' == ''"
Text="No %24(ChromeVersion) set. This can be set in eng/testing/ChromeVersions.props" />

<RemoveDir Directories="$(ChromeDir)" />

<Message Text="** Installing chrome version $(ChromeVersion), rev: $(ChromeRevision). To disable this set the msuild property InstallChromeForTests=false ."
Expand All@@ -46,9 +97,12 @@
</Target>

<Target Name="DownloadAndInstallChromeDriver"
AfterTargets="GetChromeVersion"
AfterTargets="Build"
Condition="(!Exists($(ChromeDriverStampFile)) or !Exists($(ChromeDriverBinaryPath))) and '$(InstallChromeForTests)' == 'true'">

<Error Condition="'$(ChromeVersion)' == ''"
Text="No %24(ChromeVersion) set. This can be set in eng/testing/ChromeVersions.props" />

<RemoveDir Directories="$(ChromeDriverDir)" />

<Message Text="** Installing chromedriver version $(ChromeVersion), rev: $(ChromeRevision). To disable this set the msuild property InstallChromeForTests=false ."
Expand DownExpand Up@@ -94,35 +148,4 @@

<Touch Files="$(FirefoxStampFile)" AlwaysCreate="true" />
</Target>

<UsingTask AssemblyFile="$(WasmBuildTasksAssemblyPath)"
TaskName="Microsoft.WebAssembly.Build.Tasks.GetChromeVersions" />

<Target Name="GetChromeVersion" AfterTargets="Build" Condition="'$(InstallChromeForTests)' == 'true'">
<GetChromeVersions
Condition="'$(ChromeVersion)' == ''"
OSIdentifier="$(ChromeOSIdentifier)"
OSPrefix="$(_ChromeOSPrefix)"
Channel="$(ChromeChannel)"
IntermediateOutputPath="$(ArtifactsObjDir)">
<Output TaskParameter="ChromeVersion" PropertyName="ChromeVersion" />
<Output TaskParameter="V8Version" PropertyName="V8Version" />
<Output TaskParameter="BranchPosition" PropertyName="ChromeRevision" />
<Output TaskParameter="BaseSnapshotUrl" PropertyName="_ChromeBaseSnapshotUrl" />
</GetChromeVersions>

<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'linux'">
<ChromeUrl>$(_ChromeBaseSnapshotUrl)/chrome-linux.zip</ChromeUrl>
<ChromeDriverUrl>$(_ChromeBaseSnapshotUrl)/chromedriver_linux64.zip</ChromeDriverUrl>
</PropertyGroup>
<PropertyGroup Condition="'$(ChromeOSIdentifier)' == 'win'">
<ChromeUrl>$(_ChromeBaseSnapshotUrl)/chrome-win.zip</ChromeUrl>
<ChromeDriverUrl>$(_ChromeBaseSnapshotUrl)/chromedriver_win32.zip</ChromeDriverUrl>
</PropertyGroup>

<PropertyGroup>
<ChromeStampFile>$([MSBuild]::NormalizePath('$(ChromeDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeStampFile>
<ChromeDriverStampFile>$([MSBuild]::NormalizePath('$(ChromeDriverDir)', '.install-$(ChromeVersion)-$(ChromeRevision).stamp'))</ChromeDriverStampFile>
</PropertyGroup>
</Target>
</Project>
11 changes: 6 additions & 5 deletions src/tasks/WasmBuildTasks/GetChromeVersions.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -24,10 +24,6 @@ public class GetChromeVersions : MBU.Task
private const string s_depsUrlPrefix = $"https://omahaproxy.appspot.com/deps.json?version=";
private const int s_versionCheckThresholdDays = 1;

// start at the branch position found in all.json, and try to
// download chrome, and chromedriver. If not found, then try up to
// s_numBranchPositionsToTry lower versions
private const int s_numBranchPositionsToTry = 50;
private static readonly HttpClient s_httpClient = new();

public string Channel { get; set; } = "stable";
Expand All@@ -44,6 +40,11 @@ public class GetChromeVersions : MBU.Task

public int MaxMajorVersionsToCheck { get; set; } = 2;

// start at the branch position found in all.json, and try to
// download chrome, and chromedriver. If not found, then try up to
// MaxBranchPositionsToCheck lower versions
public int MaxBranchPositionsToCheck { get; set; } = 75;

[Output]
public string ChromeVersion { get; set; } = string.Empty;
[Output]
Expand DownExpand Up@@ -240,7 +241,7 @@ private async Task<Stream> GetDownloadFileStreamAsync(string filename, string ur
string baseUrl = $"{s_snapshotBaseUrl}/{OSPrefix}";

int branchPosition = int.Parse(version.branch_base_position);
for (int i = 0; i < s_numBranchPositionsToTry; i++)
for (int i = 0; i < MaxBranchPositionsToCheck; i++)
{
string branchUrl = $"{baseUrl}/{branchPosition}";
string url = $"{branchUrl}/REVISIONS";
Expand Down