From 0ce7dbe52be860589e844e383e416a6526d50554 Mon Sep 17 00:00:00 2001 From: Johannes Zellner Date: Thu, 16 Dec 2021 16:56:07 +0100 Subject: [PATCH] Asyncify tests --- test/test.js | 151 +++++++++++++++++++++------------------------------ 1 file changed, 62 insertions(+), 89 deletions(-) diff --git a/test/test.js b/test/test.js index da87725..6c59adf 100644 --- a/test/test.js +++ b/test/test.js @@ -49,107 +49,80 @@ describe('Application life cycle test', function () { expect(app).to.be.an('object'); } - function login(username, password, done) { - browser.get('https://' + app.fqdn + '/login').then(function () { - return browser.wait(until.elementLocated(By.id('username')), TEST_TIMEOUT); - }).then(function () { - return browser.findElement(By.id('username')).sendKeys(username); - }).then(function () { - return browser.findElement(By.id('password')).sendKeys(password); - }).then(function () { - return browser.findElement(By.xpath('//input[@value="Login"]')).click(); - }).then(function () { - return browser.wait(until.elementLocated(By.xpath('//a[contains(@href, "/my-library")]')), TEST_TIMEOUT); - }).then(function () { - done(); - }); + async function waitForElement(elem) { + await browser.wait(until.elementLocated(elem), TEST_TIMEOUT); + await browser.wait(until.elementIsVisible(browser.findElement(elem)), TEST_TIMEOUT); } - function closeAccountSetupDialog(done) { - browser.get('https://' + app.fqdn).then(function () { - return browser.wait(until.elementLocated(By.id('stopDisplayModal')), TEST_TIMEOUT); - }).then(function () { - return browser.findElement(By.xpath('//span[contains(text(), "show me this anymore")]')).click(); - }).then(function () { - return browser.findElement(By.xpath('//a[contains(text(), "Set up")]')).click(); - }).then(function () { - return browser.sleep(3000); - }).then(function () { - done(); - }); + function sleep(millis) { + return new Promise(resolve => setTimeout(resolve, millis)); } - function logout(done) { - browser.get('https://' + app.fqdn + '/my-account/videos').then(function () { - return browser.wait(until.elementLocated(By.xpath('//div[@class="logged-in-display-name"]')), TEST_TIMEOUT); - }).then(function () { - return browser.sleep(2000); - }).then(function () { - return browser.findElement(By.xpath('//div[@class="logged-in-display-name"]')).click(); - }).then(function () { - return browser.sleep(2000); - }).then(function () { - return browser.findElement(By.xpath('//a[contains(text(), "Log out")]')).click(); - }).then(function () { - return browser.sleep(2000); - }).then(function () { - done(); - }); + async function login(username, password) { + await browser.get('https://' + app.fqdn + '/login'); + + await waitForElement(By.id('username')); + await browser.findElement(By.id('username')).sendKeys(username); + await browser.findElement(By.id('password')).sendKeys(password); + await browser.findElement(By.xpath('//input[@value="Login"]')).click(); + await waitForElement(By.xpath('//a[contains(@href, "/my-library")]')); } - function completeSetup(done) { + async function closeAccountSetupDialog() { + await browser.get('https://' + app.fqdn); + + await waitForElement(By.id('stopDisplayModal')); + await browser.findElement(By.xpath('//span[contains(text(), "show me this anymore")]')).click(); + await browser.findElement(By.xpath('//a[contains(text(), "Set up")]')).click(); + await browser.sleep(3000); + } + + async function logout() { + await browser.get('https://' + app.fqdn + '/my-account/videos'); + await waitForElement(By.xpath('//div[@class="logged-in-display-name"]')); + await browser.sleep(2000); + await browser.findElement(By.xpath('//div[@class="logged-in-display-name"]')).click(); + await browser.sleep(2000); + await browser.findElement(By.xpath('//a[contains(text(), "Log out")]')).click(); + await browser.sleep(2000); + } + + async function completeSetup() { 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(); - }); + await browser.get('https://' + app.fqdn + '/admin/config/edit-custom'); + await waitForElement(By.xpath('//a[contains(text(), "Configure my instance")]')); + await browser.findElement(By.xpath('//a[contains(text(), "Configure my instance")]')).click(); // this opens a new window + + await browser.get('https://' + app.fqdn + '/admin/config/edit-custom'); + await waitForElement(By.xpath('//input[contains(@value, "Update configuration")]')); + button = await browser.findElement(By.xpath('//input[contains(@value, "Update configuration")]')); + await browser.executeScript('arguments[0].scrollIntoView(true)', button); + await button.click(); + await waitForElement(By.xpath('//h3[contains(text(), "Success")]')); + + console.log('Close the newly opened tab. Will wait for 20 seconds'); + await browser.sleep(20000); } - 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, './Cloudron Test Video.mp4')); - }).then(function () { - return browser.sleep(20000); // wait for upload - }).then(function () { - return browser.findElement(By.xpath('//span[text()="Publish"]')).click(); - }).then(function () { - return browser.sleep(2000); - }).then(function () { - done(); - }); + async function uploadVideo() { + browser.get('https://' + app.fqdn + '/videos/upload'); + await waitForElement(By.xpath('//input[@id="videofile" and @type="file"]')); + await browser.findElement(By.xpath('//input[@id="videofile" and @type="file"]')).sendKeys(path.resolve(__dirname, './Cloudron Test Video.mp4')); + await browser.sleep(20000); // wait for upload + await browser.findElement(By.xpath('//span[text()="Publish"]')).click(); + await browser.sleep(2000); } - function videoExists(done) { - browser.get('https://' + app.fqdn + '/my-account/videos').then(function () { - return browser.wait(until.elementLocated(By.xpath('//a[contains(@title, "Cloudron Test Video")]')), TEST_TIMEOUT); - }).then(function () { - return done(); - }); + async function videoExists() { + await browser.get('https://' + app.fqdn + '/my-account/videos'); + await waitForElement(By.xpath('//a[contains(@title, "Cloudron Test Video")]')); } xit('build app', function () { execSync('cloudron build', EXEC_ARGS); }); - - it('install app', function (done) { + it('install app', async function () { execSync('cloudron install --location ' + LOCATION, EXEC_ARGS); - setTimeout(done, 20000); // takes a bit to create root user in background + await sleep(10000); // takes a bit to create root user in background }); it('can get app information', getAppInfo); @@ -204,9 +177,9 @@ describe('Application life cycle test', function () { it('uninstall app', function () { execSync('cloudron uninstall --app ' + app.id, EXEC_ARGS); }); // No SSO - it('install app (no sso)', function (done) { + it('install app (no sso)', async function () { execSync('cloudron install --no-sso --location ' + LOCATION, EXEC_ARGS); - setTimeout(done, 20000); // takes a bit to create root user in background + await sleep(10000); // takes a bit to create root user in background }); it('can get app information', getAppInfo); @@ -218,9 +191,9 @@ describe('Application life cycle test', function () { it('uninstall app (no sso)', function () { execSync('cloudron uninstall --app ' + app.id, EXEC_ARGS); }); // test update - it('can install app', function (done) { + it('can install app', async function () { execSync('cloudron install --appstore-id org.joinpeertube.cloudronapp --location ' + LOCATION, EXEC_ARGS); - setTimeout(done, 20000); // takes a bit to create root user in background + await sleep(10000); // takes a bit to create root user in background }); it('can get app information', getAppInfo);