mirror of
https://mau.dev/maunium/synapse.git
synced 2024-11-17 07:21:37 +01:00
Add working protractor e2e test.
This uses the ignoreSynchronization flag because of the longpoll on the event stream. It would be better to use $interval, but couldn't get that to *reliably* work when testing. I suspect that $interval won't help us here, since there is genuinely an open $http connection, as we're doing a long poll. https://github.com/angular/protractor/issues/49 for more info.
This commit is contained in:
parent
90f5eb1270
commit
95acf63ea3
4 changed files with 26 additions and 8 deletions
|
@ -18,7 +18,7 @@ on. If you do, edit the config to point to that url):
|
||||||
Create a file "environment-protractor.js" in this directory and type:
|
Create a file "environment-protractor.js" in this directory and type:
|
||||||
module.exports = {
|
module.exports = {
|
||||||
seleniumAddress: 'http://localhost:4444/wd/hub',
|
seleniumAddress: 'http://localhost:4444/wd/hub',
|
||||||
loginUrl: "http://localhost:8008/_matrix/client/#/login",
|
baseUrl: "http://localhost:8008",
|
||||||
username: "YOUR_TEST_USERNAME",
|
username: "YOUR_TEST_USERNAME",
|
||||||
password: "YOUR_TEST_PASSWORD"
|
password: "YOUR_TEST_PASSWORD"
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,7 @@ on. If you do, edit the config to point to that url):
|
||||||
Running e2e tests:
|
Running e2e tests:
|
||||||
protractor protractor.conf.js
|
protractor protractor.conf.js
|
||||||
|
|
||||||
|
NOTE: This will create a public room on the target home server.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
16
webclient/test/e2e/home.spec.js
Normal file
16
webclient/test/e2e/home.spec.js
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
var env = require("../environment-protractor.js");
|
||||||
|
|
||||||
|
describe("home page", function() {
|
||||||
|
|
||||||
|
beforeEach(function() {
|
||||||
|
ptor = protractor.getInstance();
|
||||||
|
// FIXME we use longpoll on the event stream, and I can't get $interval
|
||||||
|
// playing nicely with it. Patches welcome to fix this.
|
||||||
|
ptor.ignoreSynchronization = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should have a title", function() {
|
||||||
|
browser.get(env.baseUrl);
|
||||||
|
expect(browser.getTitle()).toEqual("[matrix]");
|
||||||
|
});
|
||||||
|
});
|
|
@ -1,6 +0,0 @@
|
||||||
describe("user page", function() {
|
|
||||||
it("should have a title", function() {
|
|
||||||
browser.get("http://matrix.org/alpha/#/login");
|
|
||||||
expect(browser.getTitle()).toEqual("[matrix]");
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -3,9 +3,16 @@ exports.config = {
|
||||||
seleniumAddress: env.seleniumAddress,
|
seleniumAddress: env.seleniumAddress,
|
||||||
specs: ['e2e/*.spec.js'],
|
specs: ['e2e/*.spec.js'],
|
||||||
onPrepare: function() {
|
onPrepare: function() {
|
||||||
browser.driver.get(env.loginUrl);
|
browser.driver.get(env.baseUrl);
|
||||||
browser.driver.findElement(by.id("user_id")).sendKeys(env.username);
|
browser.driver.findElement(by.id("user_id")).sendKeys(env.username);
|
||||||
browser.driver.findElement(by.id("password")).sendKeys(env.password);
|
browser.driver.findElement(by.id("password")).sendKeys(env.password);
|
||||||
browser.driver.findElement(by.id("login")).click();
|
browser.driver.findElement(by.id("login")).click();
|
||||||
|
|
||||||
|
// wait till the login is done, detect via url change
|
||||||
|
browser.driver.wait(function() {
|
||||||
|
return browser.driver.getCurrentUrl().then(function(url) {
|
||||||
|
return !(/login/.test(url))
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue