Reputation: 55
I've been trying to update my conf.js file to download files, it should work for firefox and chrome (independent of one another).
I've been following the guides and answers online, (including but not limited to stackoverflow) yet it doesn't fully work for me. Chrome is no problem, firefox is my trouble maker.
On firefox it simply does not download the file, unlike chrome where it downloads the file.
Update: I cannot disable popup from firefox
The relevant info from conf.js
exports.config = {
[...]
multiCapabilities: [
{
browserName: 'chrome',
'goog:chromeOptions': {
w3c: false, // problems with latest chrome driver... browser.actions is causing issues: https://github.com/jan-molak/serenity-js/issues/329
prefs: {
download: {
prompt_for_download: false,
directory_upgrade: true,
default_directory: downloadsPath,
},
},
},
} ,
{
browserName: 'firefox',
'goog:chromeOptions': {
marionette: true,
'moz:firefoxOptions': {
prefs: {
'pdfjs.disabled': true,
'browser.download.folderList': 2,
'browser.download.dir': downloadsPath,
'browser.download.panel.shown': false,
'browser.download.useDownloadDir': true,
'browser.download.manager.useWindow': false,
'browser.helperApps.alwaysAsk.force': false,
'browser.helperApps.neverAsk.openFile': true,
'browser.download.manager.closeWhenDone': false,
'browser.download.manager.alertOnEXEOpen': false,
'browser.download.manager.showWhenStarting': false,
'browser.download.manager.focusWhenStarting': false,
'browser.download.manager.showAlertOnComplete': false,
'browser.helperApps.neverAsk.saveToDisk': 'application/vnd.openxmlformats',
},
},
},
},
],
[...]
};
The relevant code from my dowload-e2e.js spec:
const downloadBtn = manipulations.getDomObject('download-contract-button', 'id');
browser.executeScript('arguments[0].click();', downloadBtn.getWebElement());
try {
await downloads.verifyFileExists(`file-name.docx`);
await downloads.verifyFileSize(`file-name.docx`, 0);
} catch (err) {
throw new Error(`ERROR: ${err.message}`);
}
downloads.removeFile(`file-name.docx`);
Upvotes: 1
Views: 614
Reputation: 2814
Firefox/Chrome try like this:
const multiCapabilities = [
{
browserName: 'chrome',
'goog:chromeOptions': {
w3c: false, // due problems with latest chrome driver
// browser.actions is causing issues: https://github.com/jan-molak/serenity-js/issues/329
prefs: {
download: {
'prompt_for_download': false,
'directory_upgrade': true,
'default_directory': downloadsPath
}
}
}
},
{
browserName: 'firefox',
'goog:chromeOptions': {
marionette: true,
'moz:firefoxOptions': {
prefs: {
'browser.download.folderList': 2,
'browser.download.dir': downloadsPath,
'browser.download.manager.showWhenStarting': false,
'browser.helperApps.alwaysAsk.force': false,
'browser.download.manager.useWindow': false,
'browser.helperApps.neverAsk.saveToDisk': 'application/octet-stream, application/json, ' +
'text/comma-separated-values, text/csv, application/csv, ' +
'application/excel, application/vnd.ms-excel, ' +
'application/vnd.msexcel, text/anytext, text/plaintext, ' +
'image/png, image/pjpeg, image/jpeg, application/zip'
}
}
}
}
];
Upvotes: 2