mirror of
https://git.cloudron.io/cloudron/syncthing-app
synced 2026-04-25 03:43:02 +00:00
b3297ccc87
Made-with: Cursor
102 lines
3.3 KiB
JavaScript
102 lines
3.3 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
import { app, clearCache, click, cloudronCli, goto, password, sendKeys, setupBrowser, takeScreenshot, teardownBrowser, username, waitFor } from '@cloudron/charlie';
|
|
|
|
/* global it, describe, before, after, afterEach */
|
|
|
|
describe('Application life cycle test', function () {
|
|
const FOLDER = 'xmf'; // keep small; long folder names fail in automation
|
|
const SYNC_PORT = 22001;
|
|
const adminUsername = 'admin';
|
|
const adminPassword = 'changeme';
|
|
|
|
before(setupBrowser);
|
|
after(teardownBrowser);
|
|
|
|
afterEach(async function () {
|
|
await takeScreenshot(this.currentTest.title);
|
|
});
|
|
|
|
async function login(uname, pass) {
|
|
await clearCache();
|
|
await goto(`https://${app.fqdn}`, 'css=#user');
|
|
await sendKeys('css=#user', uname);
|
|
await sendKeys('css=#password', pass);
|
|
await click('xpath=//button[@type="submit"]');
|
|
await waitFor('Actions');
|
|
}
|
|
|
|
async function logout() {
|
|
await goto(`https://${app.fqdn}`, 'Actions');
|
|
await click('text=Actions');
|
|
await click('text=Log Out');
|
|
await waitFor('css=#user');
|
|
}
|
|
|
|
async function loadPage() {
|
|
await goto(`https://${app.fqdn}`, 'Actions');
|
|
}
|
|
|
|
async function addFolder() {
|
|
await goto(`https://${app.fqdn}`, 'css=[ng-click*=addFolder]');
|
|
await click('css=[ng-click*=addFolder]');
|
|
await waitFor('css=#folderPath');
|
|
await sendKeys('css=#folderLabel', FOLDER);
|
|
await sendKeys('css=#folderPath', `/app/data/${FOLDER}`);
|
|
await click('css=[ng-click*=saveFolder]');
|
|
await waitFor(FOLDER);
|
|
}
|
|
|
|
async function checkFolder() {
|
|
await goto(`https://${app.fqdn}`, FOLDER);
|
|
}
|
|
|
|
// NO SSO
|
|
it('install app (NO SSO)', () => cloudronCli.install({ noSso: true, tcpPortFlags: { SYNC_PORT } }));
|
|
|
|
it('can admin login', login.bind(null, adminUsername, adminPassword));
|
|
it('can load page', loadPage);
|
|
it('can add folder', addFolder);
|
|
it('can check folder', checkFolder);
|
|
|
|
it('uninstall app', cloudronCli.uninstall);
|
|
|
|
// SSO
|
|
it('install app (SSO)', () => cloudronCli.install({ noSso: false, tcpPortFlags: { SYNC_PORT } }));
|
|
|
|
it('can login', login.bind(null, username, password));
|
|
it('can load page', loadPage);
|
|
it('can add folder', addFolder);
|
|
it('can logout', logout);
|
|
|
|
it('backup app', cloudronCli.createBackup);
|
|
it('restore app', cloudronCli.restoreFromLatestBackup);
|
|
|
|
it('can login', login.bind(null, username, password));
|
|
it('can load page', loadPage);
|
|
it('can check folder', checkFolder);
|
|
it('can logout', logout);
|
|
|
|
it('move to different location', cloudronCli.changeLocation);
|
|
|
|
it('can login', login.bind(null, username, password));
|
|
it('can load page', loadPage);
|
|
it('can check folder', checkFolder);
|
|
it('can logout', logout);
|
|
|
|
it('uninstall app', cloudronCli.uninstall);
|
|
|
|
// test update
|
|
it('can install app', () => cloudronCli.appstoreInstall({ tcpPortFlags: { SYNC_PORT } }));
|
|
it('can login', login.bind(null, username, password));
|
|
it('can load page', loadPage);
|
|
it('can add folder', addFolder);
|
|
it('can logout', logout);
|
|
|
|
it('can update', cloudronCli.update);
|
|
it('can login', login.bind(null, username, password));
|
|
it('can check folder', checkFolder);
|
|
|
|
it('uninstall app', cloudronCli.uninstall);
|
|
});
|