2018-10-31 19:31:17 +01:00
|
|
|
/* global browser */
|
2018-10-02 22:15:02 +02:00
|
|
|
const assert = require('assert');
|
|
|
|
const fs = require('fs');
|
|
|
|
const path = require('path');
|
|
|
|
|
2018-10-04 02:39:39 +02:00
|
|
|
const DownloadPage = require('./pages/desktop/download_page');
|
|
|
|
const HomePage = require('./pages/desktop/home_page');
|
|
|
|
|
|
|
|
describe('Firefox Send', function() {
|
2018-10-31 19:31:17 +01:00
|
|
|
const homePage = new HomePage();
|
2018-10-02 22:15:02 +02:00
|
|
|
const downloadDir =
|
|
|
|
browser.desiredCapabilities['moz:firefoxOptions']['prefs'][
|
|
|
|
'browser.download.dir'
|
|
|
|
];
|
|
|
|
const testFilesPath = path.join(__dirname, 'fixtures');
|
|
|
|
const testFiles = fs.readdirSync(testFilesPath);
|
|
|
|
|
2018-10-04 02:39:39 +02:00
|
|
|
beforeEach(function() {
|
2018-10-31 19:31:17 +01:00
|
|
|
homePage.open();
|
2018-10-02 22:15:02 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
testFiles.forEach(file => {
|
2018-10-04 02:39:39 +02:00
|
|
|
it(`should upload and download files, file: ${file}`, function() {
|
2018-10-31 19:31:17 +01:00
|
|
|
browser.chooseFile(homePage.uploadInput, `${testFilesPath}/${file}`);
|
|
|
|
browser.waitForExist(homePage.uploadButton);
|
|
|
|
browser.click(homePage.uploadButton);
|
|
|
|
browser.waitForExist(homePage.shareUrl);
|
|
|
|
const downloadPage = new DownloadPage(
|
|
|
|
browser.getValue(homePage.shareUrl)
|
|
|
|
);
|
|
|
|
downloadPage.open();
|
|
|
|
downloadPage.download();
|
|
|
|
browser.waitForExist(downloadPage.downloadComplete);
|
2018-10-04 02:39:39 +02:00
|
|
|
assert.ok(fs.existsSync(path.join(downloadDir, file)));
|
2018-10-02 22:15:02 +02:00
|
|
|
});
|
|
|
|
});
|
2019-01-09 15:02:11 +01:00
|
|
|
|
|
|
|
it('should update the download count on home page after 1 download', function() {
|
|
|
|
browser.chooseFile(
|
|
|
|
homePage.uploadInput,
|
|
|
|
`${testFilesPath}/${testFiles[0]}`
|
|
|
|
);
|
|
|
|
browser.waitForExist(homePage.uploadButton);
|
2019-01-10 02:25:43 +01:00
|
|
|
browser.waitForExist(homePage.downloadCountSelect);
|
|
|
|
browser.selectByIndex(homePage.downloadCountSelect, 1);
|
2019-01-09 15:02:11 +01:00
|
|
|
browser.click(homePage.uploadButton);
|
|
|
|
browser.waitForExist(homePage.shareUrl);
|
|
|
|
const downloadPage = new DownloadPage(browser.getValue(homePage.shareUrl));
|
|
|
|
downloadPage.open();
|
|
|
|
downloadPage.download();
|
|
|
|
browser.waitForExist(downloadPage.downloadComplete);
|
|
|
|
browser.back();
|
2019-01-11 01:22:40 +01:00
|
|
|
browser.waitForExist('send-archive');
|
2019-03-13 01:47:54 +01:00
|
|
|
assert(
|
|
|
|
browser
|
|
|
|
.getText('send-archive > div:first-of-type')
|
|
|
|
.includes('Expires after 1 download')
|
2019-01-09 15:02:11 +01:00
|
|
|
);
|
|
|
|
});
|
2019-03-13 21:03:44 +01:00
|
|
|
|
|
|
|
it('should ensure that the downloaded file size matches the uploaded file size', function() {
|
|
|
|
browser.chooseFile(
|
|
|
|
homePage.uploadInput,
|
|
|
|
`${testFilesPath}/${testFiles[0]}`
|
|
|
|
);
|
|
|
|
// get the file size for upload
|
|
|
|
const uploadSize = fs.statSync(`${testFilesPath}/${testFiles[0]}`).size;
|
|
|
|
|
|
|
|
browser.waitForExist(homePage.uploadButton);
|
|
|
|
browser.click(homePage.uploadButton);
|
|
|
|
|
|
|
|
browser.waitForExist(homePage.shareUrl);
|
|
|
|
const downloadPage = new DownloadPage(browser.getValue(homePage.shareUrl));
|
|
|
|
downloadPage.open();
|
|
|
|
downloadPage.download();
|
|
|
|
browser.waitForExist(downloadPage.downloadComplete);
|
|
|
|
|
|
|
|
// get the file size for download
|
|
|
|
const downloadFile = path.join(downloadDir, `${testFiles[0]}`);
|
|
|
|
const downloadSize = fs.statSync(downloadFile).size;
|
|
|
|
|
|
|
|
// check if upload and download file sizes are equal
|
|
|
|
assert.equal(uploadSize, downloadSize);
|
|
|
|
});
|
2019-10-15 15:29:48 +02:00
|
|
|
|
|
|
|
it(`should upload and download file with added tracking parameter`, function() {
|
|
|
|
const trackingUrl =
|
|
|
|
'?fbclid=IaMFak3Tr4ck1ng1d_SDlP0shBk8SM2EN3cCLFKpHVl-k-Pvv0sf9Zy0tnTu9srqVY';
|
|
|
|
const password = 'strongpassword';
|
|
|
|
|
|
|
|
browser.chooseFile(
|
|
|
|
homePage.uploadInput,
|
|
|
|
`${testFilesPath}/${testFiles[0]}`
|
|
|
|
);
|
|
|
|
browser.waitForExist(homePage.addPassword);
|
|
|
|
browser.click(homePage.addPassword);
|
|
|
|
browser.waitForExist(homePage.passwordInput);
|
|
|
|
browser.setValue(homePage.passwordInput, password);
|
|
|
|
browser.click(homePage.uploadButton);
|
|
|
|
browser.waitForExist(homePage.shareUrl);
|
|
|
|
const shareUrl = browser.getValue(homePage.shareUrl);
|
|
|
|
const downloadPage = new DownloadPage(
|
|
|
|
shareUrl.replace('#', `${trackingUrl}#`)
|
|
|
|
);
|
|
|
|
downloadPage.open();
|
|
|
|
downloadPage.downloadUsingPassword(password);
|
|
|
|
browser.waitForExist(downloadPage.downloadComplete);
|
|
|
|
assert.ok(fs.existsSync(path.join(downloadDir, testFiles[0])));
|
|
|
|
});
|
2018-10-02 22:15:02 +02:00
|
|
|
});
|