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
42 changes: 29 additions & 13 deletions images/win/scripts/ImageHelpers/InstallHelpers.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -617,6 +617,7 @@ function Get-GitHubPackageDownloadUrl {
[string]$Version,
[string]$UrlFilter,
[boolean]$IsPrerelease = $false,
[boolean]$LatestReleaseOnly = $true,
[int]$SearchInCount = 100
)

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

$json = Invoke-RestMethod -Uri "https://api.github.com/repos/${RepoOwner}/${RepoName}/releases?per_page=${SearchInCount}"
$tags = $json.Where{ $_.prerelease -eq $IsPrerelease -and $_.assets }.tag_name
$versionToDownload = $tags |
Select-String -Pattern "\d+.\d+.\d+" |
ForEach-Object { $_.Matches.Value } |
Where-Object { $_ -like "$Version.*" -or $_ -eq $Version } |
Sort-Object { [version]$_ } |
Select-Object -Last 1

if (-not $versionToDownload) {
Write-Host "Failed to get a tag name from ${RepoOwner}/${RepoName} releases"
exit 1
$availableVersions = $tags |
Select-String -Pattern "\d+.\d+.\d+" |
ForEach-Object { $_.Matches.Value } |
Where-Object { $_ -like "$Version.*" -or $_ -eq $Version } |
Sort-Object -Descending { [version]$_ }

if (-not $availableVersions) {
throw "Failed to get available versions from ${RepoOwner}/${RepoName} releases"
}

if ($LatestReleaseOnly) {
$latestVersion = $availableVersions | Select-Object -First 1
$urlFilterReplaced = $UrlFilter -replace "{BinaryName}", $BinaryName -replace "{Version}", $latestVersion
$downloadUrl = $json.assets.browser_download_url -like $urlFilterReplaced
} else {
foreach ($version in $availableVersions) {
$urlFilterReplaced = $UrlFilter -replace "{BinaryName}", $BinaryName -replace "{Version}", $version
$downloadUrl = $json.assets.browser_download_url -like $urlFilterReplaced

if ($downloadUrl) {
Write-Host "Found download url for ${RepoOwner}/${RepoName} ${BinaryName} ${version}"
break
}
}
}

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

return $downloadUrl
}
Expand Down Expand Up @@ -720,4 +736,4 @@ function Test-FileSignature {
}

Write-Output "Signature for $FilePath is valid"
}
}
20 changes: 12 additions & 8 deletions images/win/scripts/Installers/Install-IEWebDriver.ps1
Original file line number Diff line number Diff line change
@@ -1,18 +1,22 @@
################################################################################
## File: Install-SeleniumWebDrivers.ps1
## Desc: Install Selenium Web Drivers
## File: Install-IEWebDriver.ps1
## Desc: Install IE Web Driver
################################################################################


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

# Download IE selenium driver
try {
Write-Host "Selenium IEDriverServer download and install..."
$driverZipFile = Start-DownloadWithRetry -Url $ieDriverUrl -Name "SeleniumWebDrivers.zip"
}
catch {
} catch {
Write-Error "[!] Failed to download $ieDriverUrl"
exit 1
}
Expand All @@ -31,4 +35,4 @@ Write-Host "Get the IEDriver version..."
Write-Host "Setting the IEWebDriver environment variables"
setx IEWebDriver $ieDriverPath /M

Invoke-PesterTests -TestFile "Browsers" -TestName "Internet Explorer"
Invoke-PesterTests -TestFile "Browsers" -TestName "Internet Explorer"
9 changes: 7 additions & 2 deletions images/win/scripts/Installers/Install-Selenium.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,13 @@ New-Item -ItemType directory -Path $seleniumDirectory
$seleniumMajorVersion = (Get-ToolsetContent).selenium.version
$seleniumBinaryName = (Get-ToolsetContent).selenium.binary_name
$seleniumFileName = "$seleniumBinaryName.jar"
$json = Invoke-RestMethod -Uri "https://api.github.com/repos/SeleniumHQ/selenium/releases?per_page=100"
$seleniumDownloadUrl = $json.Where{-not $_.prerelease}.assets.browser_download_url | Where-Object { $_ -like "*${seleniumBinaryName}-${seleniumMajorVersion}.*jar" } | Select-Object -First 1

$seleniumDownloadUrl = Get-GitHubPackageDownloadUrl `
-RepoOwner "SeleniumHQ" `
-RepoName "selenium" `
-BinaryName "$seleniumBinaryName" `
-Version $seleniumMajorVersion `
-UrlFilter "*{BinaryName}-{Version}.jar"

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

Expand Down