mirror of
https://git.cloudron.io/cloudron/peertube-app.git
synced 2024-11-25 11:01:14 +00:00
Add tests
This commit is contained in:
parent
2effab3922
commit
e62edc778e
4 changed files with 1409 additions and 674 deletions
1989
test/package-lock.json
generated
1989
test/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -9,17 +9,17 @@
|
||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"ejs": "^2.3.4",
|
"ejs": "^3.1.3",
|
||||||
"expect.js": "^0.3.1",
|
"expect.js": "^0.3.1",
|
||||||
"mkdirp": "^0.5.1",
|
"mkdirp": "^1.0.4",
|
||||||
"mocha": "^2.3.4",
|
"mocha": "^8.0.1",
|
||||||
"rimraf": "^2.4.4",
|
"rimraf": "^3.0.2",
|
||||||
"superagent": "^1.4.0"
|
"superagent": "^5.3.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chromedriver": "^2.38.3",
|
"chromedriver": "^84.0.0",
|
||||||
"selenium-server-standalone-jar": "^3.3.1",
|
"selenium-server-standalone-jar": "^3.141.59",
|
||||||
"selenium-webdriver": "^3.3.0",
|
"selenium-webdriver": "^3.6.0",
|
||||||
"superagent": "^1.8.5"
|
"superagent": "^1.8.5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
76
test/test.js
76
test/test.js
|
@ -19,7 +19,7 @@ var execSync = require('child_process').execSync,
|
||||||
util = require('util');
|
util = require('util');
|
||||||
|
|
||||||
var by = webdriver.By,
|
var by = webdriver.By,
|
||||||
Keys = webdriver.Key,
|
Key = webdriver.Key,
|
||||||
until = webdriver.until,
|
until = webdriver.until,
|
||||||
Builder = require('selenium-webdriver').Builder;
|
Builder = require('selenium-webdriver').Builder;
|
||||||
|
|
||||||
|
@ -67,28 +67,84 @@ describe('Application life cycle test', function () {
|
||||||
browser.get('https://' + app.fqdn + '/login').then(function () {
|
browser.get('https://' + app.fqdn + '/login').then(function () {
|
||||||
return browser.wait(until.elementLocated(by.id('username')), TEST_TIMEOUT);
|
return browser.wait(until.elementLocated(by.id('username')), TEST_TIMEOUT);
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
return browser.findElement(by.name('username')).sendKeys(username);
|
return browser.findElement(by.id('username')).sendKeys(username);
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
return browser.findElement(by.name('password')).sendKeys(password);
|
return browser.findElement(by.id('password')).sendKeys(password);
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
return browser.findElement(by.xpath('//input[@value="Login"]')).click();
|
return browser.findElement(by.xpath('//input[@value="Login"]')).click();
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
return browser.wait(until.elementLocated(by.xpath('//h2[contains(text(), "Welcome to PeerTube")]')), TEST_TIMEOUT);
|
return browser.wait(until.elementLocated(by.xpath('//div[contains(text(), "MY LIBRARY")]')), TEST_TIMEOUT);
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function completeSetup(done) {
|
||||||
|
var button;
|
||||||
|
|
||||||
|
browser.get('https://' + app.fqdn + '/admin/config/edit-custom').then(function () {
|
||||||
|
return browser.wait(until.elementLocated(by.xpath('//a[contains(text(), "Configure my instance")]')), TEST_TIMEOUT);
|
||||||
|
}).then(function () {
|
||||||
|
return browser.findElement(by.xpath('//a[contains(text(), "Configure my instance")]')).click(); // this opens a new window
|
||||||
|
}).then(function () {
|
||||||
|
return browser.get('https://' + app.fqdn + '/admin/config/edit-custom');
|
||||||
|
}).then(function () {
|
||||||
|
return browser.wait(until.elementLocated(by.xpath('//input[contains(@value, "Update configuration")]')), TEST_TIMEOUT);
|
||||||
|
}).then(function () {
|
||||||
|
button = browser.findElement(by.xpath('//input[contains(@value, "Update configuration")]'));
|
||||||
|
return browser.executeScript('arguments[0].scrollIntoView(true)', button);
|
||||||
|
}).then(function () {
|
||||||
|
return button.click();
|
||||||
|
}).then(function () {
|
||||||
|
return browser.wait(until.elementLocated(by.xpath('//h3[contains(text(), "Success")]')), TEST_TIMEOUT);
|
||||||
|
}).then(function () {
|
||||||
|
console.log('Close the newly opened tab. Will wait for 20 seconds');
|
||||||
|
return browser.sleep(20000);
|
||||||
|
}).then(function () {
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function uploadVideo(done) {
|
||||||
|
browser.get('https://' + app.fqdn + '/videos/upload').then(function () {
|
||||||
|
return browser.findElement(by.xpath('//input[@id="videofile" and @type="file"]')).sendKeys(path.resolve(__dirname, './video.mp4'));
|
||||||
|
}).then(function () {
|
||||||
|
return browser.sleep(20000); // wait for upload
|
||||||
|
}).then(function () {
|
||||||
|
return browser.findElement(by.xpath('//input[@id="name"]')).sendKeys(Key.chord(Key.CONTROL, 'a'));
|
||||||
|
}).then(function () {
|
||||||
|
return browser.findElement(by.xpath('//input[@id="name"]')).sendKeys('Cloudron Test Video');
|
||||||
|
}).then(function () {
|
||||||
|
return browser.findElement(by.xpath('//span[text()="Publish"]')).click();
|
||||||
|
}).then(function () {
|
||||||
|
return browser.sleep(2000);
|
||||||
|
}).then(function () {
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function videoExists(done) {
|
||||||
|
browser.get('https://' + app.fqdn + '/my-account/videos').then(function () {
|
||||||
|
return browser.wait(until.elementLocated(by.xpath('//a[@title="Cloudron Test Video"]')), TEST_TIMEOUT);
|
||||||
|
}).then(function () {
|
||||||
|
return done();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
xit('build app', function () {
|
xit('build app', function () {
|
||||||
execSync('cloudron build', { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
|
execSync('cloudron build', { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
|
||||||
});
|
});
|
||||||
|
|
||||||
it('install app', function () {
|
it('install app', function (done) {
|
||||||
execSync('cloudron install --location ' + LOCATION, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
|
execSync('cloudron install --location ' + LOCATION, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
|
||||||
|
setTimeout(done, 10000); // takes a bit to create root user in background
|
||||||
});
|
});
|
||||||
|
|
||||||
it('can get app information', getAppInfo);
|
it('can get app information', getAppInfo);
|
||||||
it('can login', login);
|
it('can login', login);
|
||||||
|
it('can complete setup', completeSetup);
|
||||||
|
it('can upload video', uploadVideo);
|
||||||
|
it('video exists', videoExists);
|
||||||
|
|
||||||
it('backup app', function () {
|
it('backup app', function () {
|
||||||
execSync('cloudron backup create --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
|
execSync('cloudron backup create --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
|
||||||
|
@ -103,13 +159,15 @@ describe('Application life cycle test', function () {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('can login', login);
|
it('can login', login);
|
||||||
|
it('video exists', videoExists);
|
||||||
|
|
||||||
it('can restart app', function () {
|
it('can restart app', function () {
|
||||||
execSync('cloudron restart --app ' + app.id);
|
execSync('cloudron restart --app ' + app.id);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('can login', login);
|
it('can login', login);
|
||||||
|
it('video exists', videoExists);
|
||||||
|
|
||||||
|
// this is not supported for federation
|
||||||
it('move to different location', function (done) {
|
it('move to different location', function (done) {
|
||||||
execSync('cloudron configure --location ' + LOCATION + '2 --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
|
execSync('cloudron configure --location ' + LOCATION + '2 --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
|
||||||
done();
|
done();
|
||||||
|
@ -117,6 +175,7 @@ describe('Application life cycle test', function () {
|
||||||
|
|
||||||
it('can get app information', getAppInfo);
|
it('can get app information', getAppInfo);
|
||||||
it('can login', login);
|
it('can login', login);
|
||||||
|
it('video exists', videoExists);
|
||||||
|
|
||||||
it('uninstall app', function () {
|
it('uninstall app', function () {
|
||||||
execSync('cloudron uninstall --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
|
execSync('cloudron uninstall --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
|
||||||
|
@ -129,10 +188,15 @@ describe('Application life cycle test', function () {
|
||||||
|
|
||||||
it('can get app information', getAppInfo);
|
it('can get app information', getAppInfo);
|
||||||
it('can login', login);
|
it('can login', login);
|
||||||
|
it('can complete setup', completeSetup);
|
||||||
|
it('can upload video', uploadVideo);
|
||||||
|
it('video exists', videoExists);
|
||||||
|
|
||||||
it('can update', function () {
|
it('can update', function () {
|
||||||
execSync('cloudron update --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
|
execSync('cloudron update --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
|
||||||
});
|
});
|
||||||
|
it('can login', login);
|
||||||
|
it('video exists', videoExists);
|
||||||
|
|
||||||
it('uninstall app', function () {
|
it('uninstall app', function () {
|
||||||
execSync('cloudron uninstall --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
|
execSync('cloudron uninstall --app ' + app.id, { cwd: path.resolve(__dirname, '..'), stdio: 'inherit' });
|
||||||
|
|
BIN
test/video.mp4
Normal file
BIN
test/video.mp4
Normal file
Binary file not shown.
Loading…
Reference in a new issue