diff --git a/third-party/download-content-shell/download-content-shell.js b/third-party/download-content-shell/download-content-shell.js index 0e2e12014ffe..b69ef9a15794 100644 --- a/third-party/download-content-shell/download-content-shell.js +++ b/third-party/download-content-shell/download-content-shell.js @@ -18,12 +18,14 @@ const MAX_CONTENT_SHELLS = 10; const PLATFORM = getPlatform(); const LH_ROOT = `${__dirname}/../..`; const CACHE_PATH = path.resolve(LH_ROOT, '.tmp', 'chromium-web-tests', 'content-shells'); +const COMMIT_POSITION_UPDATE_PERIOD = 420; function main() { fs.mkdirSync(CACHE_PATH, {recursive: true}); deleteOldContentShells(); - findPreviousUploadedPosition(findMostRecentChromiumCommit()) + findMostRecentChromiumCommit() + .then(findPreviousUploadedPosition) .then(onUploadedCommitPosition) .catch(onError); @@ -64,13 +66,13 @@ function getPlatform() { throw new Error(`Unrecognized platform detected: ${process.platform}`); } -function findMostRecentChromiumCommit() { - // TODO: this code works only if there is a full chromium checkout present. - // const commitMessage = shell('git log --max-count=1 --grep="Cr-Commit-Position"').toString().trim(); - // const commitPosition = commitMessage.match(/Cr-Commit-Position: refs\/heads\/master@\{#([0-9]+)\}/)[1]; - // return commitPosition; - // TODO: make this dynamic. - return '856956'; +async function findMostRecentChromiumCommit() { + const snapshotUrl = `https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/${PLATFORM}%2FLAST_CHANGE?alt=media`; + const commitPosition = Number((await utils.fetch(snapshotUrl)).toString()); + + // Only update the content shell roughly once a day. + // see https://github.com/GoogleChrome/lighthouse/pull/12232#discussion_r592016416 + return commitPosition - commitPosition % COMMIT_POSITION_UPDATE_PERIOD; } function deleteOldContentShells() { diff --git a/third-party/download-content-shell/utils.js b/third-party/download-content-shell/utils.js index 1956851d3cb6..8a23fe4ca5d9 100644 --- a/third-party/download-content-shell/utils.js +++ b/third-party/download-content-shell/utils.js @@ -31,7 +31,7 @@ function fetch(url) { function getCallback(resolve, reject, response) { if (response.statusCode !== 200) { - reject(new Error(`Request error: + ${response.statusCode}`)); + reject(new Error(`Request error: ${response.statusCode}`)); return; } const body = new Stream();