diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 66ff3e8..e6e22cc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -46,6 +46,11 @@ test:register:element-release: - "killall conduit-x86_64-unknown-linux-gnu" - "cd ../.." - "cat conduit.log" + artifacts: + paths: + - "tests/puppeteer/*.png" + - "conduit.log" + expire_in: 1 week # --------------------------------------------------------------------- # diff --git a/tests/puppeteer/test-element-web.js b/tests/puppeteer/test-element-web.js index 83a43c2..a3c3dae 100644 --- a/tests/puppeteer/test-element-web.js +++ b/tests/puppeteer/test-element-web.js @@ -1,22 +1,34 @@ const puppeteer = require('puppeteer'); -run().then(() => console.log('Done')).catch(_error => process.exit(111)); +run().then(() => console.log('Done')).catch(error => { + console.error("Registration test failed"); + console.error(error); + process.exit(111); +}); async function run() { - const username = "testuser" + String(Math.floor(Math.random()*100000)); - const password = "testpassword" + String(Math.floor(Math.random()*100000)); - console.debug("Testuser for this run:\n User: "+username+"\n Password: "+password); + const username = "testuser" + String(Math.floor(Math.random() * 100000)); + const password = "testpassword" + String(Math.floor(Math.random() * 100000)); + console.debug("Testuser for this run:\n User: " + username + "\n Password: " + password); - const browser = await puppeteer.launch({headless: true}); + const browser = await puppeteer.launch({ + headless: true, args: [ + "--no-sandbox" + ] + }); const page = await browser.newPage(); await page.goto('https://app.element.io/'); + await page.screenshot({ path: '01-element-web-started.png' }); + console.debug("Click [Create Account] button"); await page.waitForSelector('a.mx_ButtonCreateAccount'); await page.click('a.mx_ButtonCreateAccount'); + await page.screenshot({ path: '02-clicked-create-account-button.png' }); + // The webapp should have loaded right now, if anything takes more than 5 seconds, something probably broke page.setDefaultTimeout(5000); @@ -24,41 +36,58 @@ async function run() { await page.waitForSelector('div.mx_ServerPicker_change'); await page.click('div.mx_ServerPicker_change'); + await page.screenshot({ path: '03-clicked-edit-homeserver-button.png' }); + console.debug("Type in local homeserver url"); await page.waitForSelector('input#mx_homeserverInput'); await page.click('input#mx_homeserverInput'); await page.click('input#mx_homeserverInput'); await page.keyboard.type('http://localhost:6167'); + await page.screenshot({ path: '04-typed-in-homeserver.png' }); + console.debug("[Continue] with changed homeserver"); await page.waitForSelector("div.mx_ServerPickerDialog_continue"); await page.click('div.mx_ServerPickerDialog_continue'); + await page.screenshot({ path: '05-back-to-enter-user-credentials.png' }); + console.debug("Type in username"); await page.waitForSelector("input#mx_RegistrationForm_username"); await page.click('input#mx_RegistrationForm_username'); await page.keyboard.type(username); + await page.screenshot({ path: '06-typed-in-username.png' }); + console.debug("Type in password"); await page.waitForSelector("input#mx_RegistrationForm_password"); await page.click('input#mx_RegistrationForm_password'); await page.keyboard.type(password); + await page.screenshot({ path: '07-typed-in-password-once.png' }); + console.debug("Type in password again"); await page.waitForSelector("input#mx_RegistrationForm_passwordConfirm"); await page.click('input#mx_RegistrationForm_passwordConfirm'); await page.keyboard.type(password); + await page.screenshot({ path: '08-typed-in-password-twice.png' }); + console.debug("Click on [Register] to finish the account creation"); await page.waitForSelector("input.mx_Login_submit"); await page.click('input.mx_Login_submit'); + await page.screenshot({ path: '09-clicked-on-register-button.png' }); + + // Waiting for the app to login can take some time, so be patient. + page.setDefaultTimeout(10000); + console.debug("Wait for chat window to show up"); await page.waitForSelector("div.mx_HomePage_default_buttons"); console.debug("Apparently the registration worked."); - // Wait 5 seconds - await new Promise(resolve => setTimeout(resolve, 5000)); + await page.screenshot({ path: '10-logged-in-homescreen.png' }); + // Close the browser and exit the script await browser.close();