8 changed files with 196 additions and 18 deletions
@ -0,0 +1,19 @@ |
|||||||
|
<!-- |
||||||
|
If you're requesting a new feature, that isn't part of this project yet, |
||||||
|
then please consider filling out a "Feature Request" instead! |
||||||
|
|
||||||
|
If you need a hand setting up your conduit server, feel free to ask for help in the |
||||||
|
Conduit Matrix Chat: https://matrix.to/#/#conduit:fachschaften.org. |
||||||
|
--> |
||||||
|
|
||||||
|
### Description |
||||||
|
<!-- What did you do and what happened? Why is that bad? --> |
||||||
|
|
||||||
|
### System Configuration |
||||||
|
<!-- Other data that might help us debug this issue, like os, conduit version, database backend --> |
||||||
|
|
||||||
|
Conduit Version: |
||||||
|
Database backend (default is sqlite): sqlite |
||||||
|
|
||||||
|
|
||||||
|
/label ~conduit |
||||||
@ -0,0 +1,17 @@ |
|||||||
|
<!-- |
||||||
|
If you want to report a bug or an error, |
||||||
|
then please consider filling out a "Bug Report" instead! |
||||||
|
--> |
||||||
|
|
||||||
|
|
||||||
|
### Is your feature request related to a problem? Please describe. |
||||||
|
|
||||||
|
<!-- Eg. I'm always frustrated when [...] --> |
||||||
|
|
||||||
|
|
||||||
|
### Describe the solution you'd like |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/label ~conduit |
||||||
@ -1,15 +0,0 @@ |
|||||||
# Headline |
|
||||||
|
|
||||||
### Description |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/label ~conduit |
|
||||||
@ -0,0 +1,8 @@ |
|||||||
|
|
||||||
|
<!-- Please describe your changes here --> |
||||||
|
|
||||||
|
----------------------------------------------------------------------------- |
||||||
|
|
||||||
|
- [ ] I ran `cargo fmt` and `cargo test` |
||||||
|
- [ ] I agree to release my code and all other changes of this MR under the Apache-2.0 license |
||||||
|
|
||||||
@ -0,0 +1,101 @@ |
|||||||
|
const puppeteer = require('puppeteer'); |
||||||
|
|
||||||
|
run().then(() => console.log('Done')).catch(error => { |
||||||
|
console.error("Registration test failed."); |
||||||
|
console.error("There might be a screenshot of the failure in the artifacts.\n"); |
||||||
|
console.error(error); |
||||||
|
process.exit(111); |
||||||
|
}); |
||||||
|
|
||||||
|
async function run() { |
||||||
|
|
||||||
|
const elementUrl = process.argv[process.argv.length - 2]; |
||||||
|
console.debug("Testing registration with ElementWeb hosted at "+ elementUrl); |
||||||
|
|
||||||
|
const homeserverUrl = process.argv[process.argv.length - 1]; |
||||||
|
console.debug("Homeserver url: "+ homeserverUrl); |
||||||
|
|
||||||
|
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, args: [ |
||||||
|
"--no-sandbox" |
||||||
|
] |
||||||
|
}); |
||||||
|
|
||||||
|
const page = await browser.newPage(); |
||||||
|
await page.goto(elementUrl); |
||||||
|
|
||||||
|
await page.screenshot({ path: '01-element-web-opened.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); |
||||||
|
|
||||||
|
console.debug("Click [Edit] to switch homeserver"); |
||||||
|
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(homeserverUrl); |
||||||
|
|
||||||
|
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."); |
||||||
|
|
||||||
|
await page.screenshot({ path: '10-logged-in-homescreen.png' }); |
||||||
|
|
||||||
|
|
||||||
|
// Close the browser and exit the script
|
||||||
|
await browser.close(); |
||||||
|
} |
||||||
@ -0,0 +1,15 @@ |
|||||||
|
[global] |
||||||
|
|
||||||
|
# Server runs in same container as tests do, so localhost is fine |
||||||
|
server_name = "localhost" |
||||||
|
|
||||||
|
# With a bit of luck /tmp is a RAM disk, so that the file system does not become the bottleneck while testing |
||||||
|
database_path = "/tmp" |
||||||
|
|
||||||
|
# All the other settings are left at their defaults: |
||||||
|
port = 6167 |
||||||
|
max_request_size = 20_000_000 |
||||||
|
allow_registration = true |
||||||
|
trusted_servers = ["matrix.org"] |
||||||
|
address = "127.0.0.1" |
||||||
|
proxy = "none" |
||||||
Loading…
Reference in new issue