Skip to content

Commit b9401a6

Browse files
chore: Check branch for latest chrome versions, not current chrome versions (#32976)
* Check branch for latest chrome versions, not current chrome versions * empty commit * add permissions for pull-requests write for browser version action * try to just install yarn * just leave deps actually * remove adding to project board * fix mocked requests in test * cleanup * move cleanup to afterEach
1 parent 83c8144 commit b9401a6

File tree

3 files changed

+41
-55
lines changed

3 files changed

+41
-55
lines changed

.github/workflows/update-browser-versions.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ on:
77
jobs:
88
update-browser-versions:
99
runs-on: ubuntu-latest
10+
permissions:
11+
pull-requests: write
1012
env:
1113
CYPRESS_BOT_APP_ID: ${{ secrets.CYPRESS_BOT_APP_ID }}
1214
BASE_BRANCH: develop
@@ -47,7 +49,7 @@ jobs:
4749
- name: Determine name of new branch and if it already exists
4850
id: check-branch
4951
env:
50-
BRANCH_NAME: update-chrome-stable-from-${{ steps.get-versions.outputs.current_stable_version }}-beta-from-${{ steps.get-versions.outputs.current_beta_version }}
52+
BRANCH_NAME: update-chrome-stable-from-${{ steps.get-versions.outputs.latest_stable_version }}-beta-from-${{ steps.get-versions.outputs.latest_beta_version }}
5153
run: |
5254
echo "branch_name=${{ env.BRANCH_NAME }}" >> $GITHUB_OUTPUT
5355
echo "branch_exists=$(git show-ref --verify --quiet refs/remotes/origin/${{ env.BRANCH_NAME }} && echo 'true')" >> $GITHUB_OUTPUT
@@ -127,5 +129,4 @@ jobs:
127129
branchName: '${{ steps.check-branch.outputs.branch_name }}',
128130
description: '${{ steps.get-versions.outputs.description }}',
129131
body: 'This PR was auto-generated to update the version(s) of Chrome for driver tests',
130-
addToProjectBoard: true,
131132
})

scripts/github-actions/update-browser-versions.js

Lines changed: 7 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
const https = require('https')
21
const fs = require('fs')
32
const yaml = require('yaml')
43
const path = require('path')
@@ -10,33 +9,16 @@ const CHROME_BETA_KEY = 'chrome-beta-version'
109
const CIRCLECI_WORKFLOWS_FILEPATH = path.join(__dirname, '../../.circleci/src/pipeline/@pipeline.yml')
1110

1211
// https://developer.chrome.com/docs/versionhistory/reference/#platform-identifiers
13-
const getLatestVersionData = ({ channel, currentVersion }) => {
14-
const options = {
15-
hostname: 'versionhistory.googleapis.com',
16-
port: 443,
17-
path: `/v1/chrome/platforms/linux/channels/${channel}/versions?filter=version>${currentVersion}&order_by=version%20desc`,
18-
method: 'GET',
19-
}
20-
21-
return new Promise((resolve, reject) => {
22-
const req = https.request(options, (res) => {
23-
let response = ''
24-
25-
res.on('data', (d) => {
26-
response += d.toString()
27-
})
12+
const getLatestVersionData = async ({ channel, currentVersion }) => {
13+
const url = `https://versionhistory.googleapis.com/v1/chrome/platforms/linux/channels/${channel}/versions?filter=version>${currentVersion}&order_by=version%20desc`
2814

29-
res.on('end', () => {
30-
resolve(response)
31-
})
32-
})
15+
const response = await fetch(url)
3316

34-
req.on('error', (err) => {
35-
reject(err)
36-
})
17+
if (!response.ok) {
18+
throw new Error(`HTTP error! status: ${response.status}`)
19+
}
3720

38-
req.end()
39-
})
21+
return await response.text()
4022
}
4123

4224
const getVersions = async ({ core }) => {

scripts/unit/github-actions/update-browser-version-spec.js

Lines changed: 31 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
const chai = require('chai')
22
const fs = require('fs')
33
const mockfs = require('mock-fs')
4-
const nock = require('nock')
54
const sinon = require('sinon')
65

76
chai.use(require('sinon-chai'))
@@ -22,47 +21,51 @@ const coreStub = () => {
2221
}
2322
}
2423

25-
const stubChromeVersionResult = (channel, result) => {
26-
nock('https://versionhistory.googleapis.com')
27-
.get((uri) => uri.includes(channel))
28-
.reply(200, result)
29-
}
30-
3124
const stubRepoVersions = ({ betaVersion, stableVersion }) => {
3225
mockfs({
3326
[CIRCLECI_WORKFLOWS_FILEPATH]: `chrome-stable-version: &chrome-stable-version "${stableVersion}"\nchrome-beta-version: &chrome-beta-version "${betaVersion}"\n`,
3427
})
3528
}
3629

3730
const stubChromeVersions = ({ betaVersion, stableVersion }) => {
38-
stubChromeVersionResult('stable',
39-
{
40-
versions: stableVersion ? [
41-
{
42-
name: `chrome/platforms/linux/channels/stable/versions/${stableVersion}`,
43-
version: stableVersion,
44-
},
45-
] : [],
46-
nextPageToken: '',
47-
})
31+
if (!global.originalFetch) {
32+
global.originalFetch = global.fetch
33+
}
4834

49-
stubChromeVersionResult('beta',
50-
{
51-
versions: betaVersion ? [
52-
{
53-
name: `chrome/platforms/linux/channels/beta/versions/${betaVersion}`,
54-
version: betaVersion,
55-
},
56-
] : [],
57-
nextPageToken: '',
58-
})
35+
const stableResponse = {
36+
versions: stableVersion ? [{ name: `chrome/platforms/linux/channels/stable/versions/${stableVersion}`, version: stableVersion }] : [],
37+
nextPageToken: '',
38+
}
39+
40+
const betaResponse = {
41+
versions: betaVersion ? [{ name: `chrome/platforms/linux/channels/beta/versions/${betaVersion}`, version: betaVersion }] : [],
42+
nextPageToken: '',
43+
}
44+
45+
global.fetch = sinon.stub().callsFake((url) => {
46+
if (url.includes('/channels/stable/')) {
47+
return Promise.resolve({ ok: true, status: 200, text: () => Promise.resolve(JSON.stringify(stableResponse)) })
48+
}
49+
50+
if (url.includes('/channels/beta/')) {
51+
return Promise.resolve({ ok: true, status: 200, text: () => Promise.resolve(JSON.stringify(betaResponse)) })
52+
}
53+
54+
throw new Error(`Unexpected fetch URL: ${url}`)
55+
})
5956
}
6057

6158
describe('update browser version github action', () => {
6259
beforeEach(() => {
6360
sinon.restore()
6461
mockfs.restore()
65-
nock.cleanAll()
62+
})
63+
64+
afterEach(() => {
65+
if (global.originalFetch) {
66+
global.fetch = global.originalFetch
67+
delete global.originalFetch
68+
}
6669
})
6770

6871
context('.getVersions', () => {

0 commit comments

Comments
 (0)