Skip to content

Commit ddebd05

Browse files
[Windows] Use function to get selenium asset url (#8448)
1 parent 23ff0d7 commit ddebd05

File tree

3 files changed

+48
-23
lines changed

3 files changed

+48
-23
lines changed

images/win/scripts/ImageHelpers/InstallHelpers.ps1

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -617,6 +617,7 @@ function Get-GitHubPackageDownloadUrl {
617617
[string]$Version,
618618
[string]$UrlFilter,
619619
[boolean]$IsPrerelease = $false,
620+
[boolean]$LatestReleaseOnly = $true,
620621
[int]$SearchInCount = 100
621622
)
622623

@@ -626,20 +627,35 @@ function Get-GitHubPackageDownloadUrl {
626627

627628
$json = Invoke-RestMethod -Uri "https://api.github.com/repos/${RepoOwner}/${RepoName}/releases?per_page=${SearchInCount}"
628629
$tags = $json.Where{ $_.prerelease -eq $IsPrerelease -and $_.assets }.tag_name
629-
$versionToDownload = $tags |
630-
Select-String -Pattern "\d+.\d+.\d+" |
631-
ForEach-Object { $_.Matches.Value } |
632-
Where-Object { $_ -like "$Version.*" -or $_ -eq $Version } |
633-
Sort-Object { [version]$_ } |
634-
Select-Object -Last 1
635-
636-
if (-not $versionToDownload) {
637-
Write-Host "Failed to get a tag name from ${RepoOwner}/${RepoName} releases"
638-
exit 1
630+
$availableVersions = $tags |
631+
Select-String -Pattern "\d+.\d+.\d+" |
632+
ForEach-Object { $_.Matches.Value } |
633+
Where-Object { $_ -like "$Version.*" -or $_ -eq $Version } |
634+
Sort-Object -Descending { [version]$_ }
635+
636+
if (-not $availableVersions) {
637+
throw "Failed to get available versions from ${RepoOwner}/${RepoName} releases"
638+
}
639+
640+
if ($LatestReleaseOnly) {
641+
$latestVersion = $availableVersions | Select-Object -First 1
642+
$urlFilterReplaced = $UrlFilter -replace "{BinaryName}", $BinaryName -replace "{Version}", $latestVersion
643+
$downloadUrl = $json.assets.browser_download_url -like $urlFilterReplaced
644+
} else {
645+
foreach ($version in $availableVersions) {
646+
$urlFilterReplaced = $UrlFilter -replace "{BinaryName}", $BinaryName -replace "{Version}", $version
647+
$downloadUrl = $json.assets.browser_download_url -like $urlFilterReplaced
648+
649+
if ($downloadUrl) {
650+
Write-Host "Found download url for ${RepoOwner}/${RepoName} ${BinaryName} ${version}"
651+
break
652+
}
653+
}
639654
}
640655

641-
$UrlFilter = $UrlFilter -replace "{BinaryName}",$BinaryName -replace "{Version}",$versionToDownload
642-
$downloadUrl = $json.assets.browser_download_url -like $UrlFilter
656+
if (-not $downloadUrl) {
657+
throw "Failed to get download url for ${RepoOwner}/${RepoName} ${BinaryName}"
658+
}
643659

644660
return $downloadUrl
645661
}
@@ -720,4 +736,4 @@ function Test-FileSignature {
720736
}
721737

722738
Write-Output "Signature for $FilePath is valid"
723-
}
739+
}

images/win/scripts/Installers/Install-IEWebDriver.ps1

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,22 @@
11
################################################################################
2-
## File: Install-SeleniumWebDrivers.ps1
3-
## Desc: Install Selenium Web Drivers
2+
## File: Install-IEWebDriver.ps1
3+
## Desc: Install IE Web Driver
44
################################################################################
55

6-
7-
$json = Invoke-RestMethod -Uri "https://api.github.com/repos/SeleniumHQ/selenium/releases?per_page=100"
8-
$ieDriverUrl = $json.Where{-not $_.prerelease}.assets.browser_download_url | Where-Object { $_ -like "*IEDriverServer_x64_*.zip" } | Select-Object -First 1
6+
$seleniumMajorVersion = (Get-ToolsetContent).selenium.version
7+
$ieDriverUrl = Get-GitHubPackageDownloadUrl `
8+
-RepoOwner "SeleniumHQ" `
9+
-RepoName "selenium" `
10+
-BinaryName "IEDriverServer_x64" `
11+
-Version $seleniumMajorVersion `
12+
-UrlFilter "*{BinaryName}_{Version}.zip" `
13+
-LatestReleaseOnly $false
914

1015
# Download IE selenium driver
1116
try {
1217
Write-Host "Selenium IEDriverServer download and install..."
1318
$driverZipFile = Start-DownloadWithRetry -Url $ieDriverUrl -Name "SeleniumWebDrivers.zip"
14-
}
15-
catch {
19+
} catch {
1620
Write-Error "[!] Failed to download $ieDriverUrl"
1721
exit 1
1822
}
@@ -31,4 +35,4 @@ Write-Host "Get the IEDriver version..."
3135
Write-Host "Setting the IEWebDriver environment variables"
3236
setx IEWebDriver $ieDriverPath /M
3337

34-
Invoke-PesterTests -TestFile "Browsers" -TestName "Internet Explorer"
38+
Invoke-PesterTests -TestFile "Browsers" -TestName "Internet Explorer"

images/win/scripts/Installers/Install-Selenium.ps1

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,13 @@ New-Item -ItemType directory -Path $seleniumDirectory
1111
$seleniumMajorVersion = (Get-ToolsetContent).selenium.version
1212
$seleniumBinaryName = (Get-ToolsetContent).selenium.binary_name
1313
$seleniumFileName = "$seleniumBinaryName.jar"
14-
$json = Invoke-RestMethod -Uri "https://api.github.com/repos/SeleniumHQ/selenium/releases?per_page=100"
15-
$seleniumDownloadUrl = $json.Where{-not $_.prerelease}.assets.browser_download_url | Where-Object { $_ -like "*${seleniumBinaryName}-${seleniumMajorVersion}.*jar" } | Select-Object -First 1
14+
15+
$seleniumDownloadUrl = Get-GitHubPackageDownloadUrl `
16+
-RepoOwner "SeleniumHQ" `
17+
-RepoName "selenium" `
18+
-BinaryName "$seleniumBinaryName" `
19+
-Version $seleniumMajorVersion `
20+
-UrlFilter "*{BinaryName}-{Version}.jar"
1621

1722
Start-DownloadWithRetry -Url $seleniumDownloadUrl -Name $seleniumFileName -DownloadPath $seleniumDirectory
1823

0 commit comments

Comments
 (0)