#!/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); });