Skip to content
Closed
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
59 changes: 59 additions & 0 deletions chrome-driver.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
const https = require('https');
const fs = require('fs');
const unzipper = require('unzipper');

const CHROME_DRIVER_ENDPOINT = 'https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions-with-downloads.json';

https.get(CHROME_DRIVER_ENDPOINT, (res) => {
let data = '';

res.on('data', (chunk) => {
data += chunk;
});

res.on('end', () => {
try {
const versions = JSON.parse(data);
const chromeVersion = versions.channels.Stable.version; // Change to the version you need
const chromeDriverVersion = versions.channels.Stable.downloads.chromedriver.find(driver => driver.url.includes(chromeVersion)).version;
const chromeDriverUrl = versions.channels.Stable.downloads.chromedriver.find(driver => driver.url.includes(chromeVersion)).url;

const file = fs.createWriteStream(`chromedriver_${chromeDriverVersion}.zip`);
https.get(chromeDriverUrl, (response) => {
response.pipe(file);
file.on('finish', () => {
file.close();
console.log('ChromeDriver downloaded successfully.');

// Unzip ChromeDriver file
fs.createReadStream(`chromedriver_${chromeDriverVersion}.zip`)
.pipe(unzipper.Extract({ path: '.' }))
.on('close', () => {
console.log('ChromeDriver unzipped successfully.');
fs.unlink(`chromedriver_${chromeDriverVersion}.zip`, (err) => {
if (err) {
console.error('Error deleting zip file:', err);
} else {
console.log('Zip file deleted.');
}
});
})
.on('error', (err) => {
console.error('Error unzipping ChromeDriver:', err);
});
});
}).on('error', (err) => {
fs.unlink(`chromedriver_${chromeDriverVersion}.zip`, (unlinkErr) => {
if (unlinkErr) {
console.error('Error deleting zip file:', unlinkErr);
}
console.error(`Error downloading ChromeDriver: ${err.message}`);
});
});
} catch (error) {
console.error('Error parsing JSON:', error);
}
});
}).on('error', (err) => {
console.error(`Error fetching ChromeDriver version: ${err.message}`);
});
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
"pretest": "tsc && gulp copy",
"test": "npm run test-unit && npm run test-e2e",
"test-unit": "jasmine",
"pretest-e2e:update": "node ./bin/webdriver-manager update",
"pretest-e2e:update": "node ./node_modules/protractor/bin/webdriver-manager update --chromeDriver=false && node ./chromedriver-install.js",
"pretest-e2e:start": "node ./bin/webdriver-manager start --detach --seleniumPort 4444 --quiet",
"pretest-e2e": "npm run pretest && npm run pretest-e2e:update && npm run pretest-e2e:start",
"test-e2e": "jasmine JASMINE_CONFIG_PATH=e2e_spec/support/headless.json",
Expand Down