1
0
mirror of https://git.cloudron.io/cloudron/syncthing-app synced 2026-04-25 03:43:02 +00:00
Files
syncthing-app/test/test.js
T
Girish Ramakrishnan b3297ccc87 test: port to charlie
Made-with: Cursor
2026-04-24 20:04:51 +02:00

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);
});