zulip/frontend_tests/casper_tests/00-realm-creation.js

94 lines
2.9 KiB
JavaScript

var common = require("../casper_lib/common.js");
var email = "alice@test.example.com";
var subdomain = "testsubdomain";
var organization_name = "Awesome Organization";
var host = "zulipdev.com:9981";
var realm_host = "testsubdomain" + "." + host;
casper.start("http://" + host + "/new/");
casper.then(function () {
// Submit the email for realm creation
this.waitUntilVisible('form[name="email_form"]', function () {
this.fill(
'form[name="email_form"]',
{
email: email,
},
true
);
});
// Make sure confirmation email is send
this.waitWhileVisible('form[name="email_form"]', function () {
var regex = new RegExp("^http://[^/]+/accounts/new/send_confirm/" + email);
this.test.assertUrlMatch(regex, "Confirmation mail send");
});
});
// Special endpoint enabled only during tests for extracting confirmation key
casper.thenOpen("http://" + host + "/confirmation_key/");
// Open the confirmation URL
casper.then(function () {
var confirmation_key = JSON.parse(this.getPageContent()).confirmation_key;
var confirmation_url = "http://" + host + "/accounts/do_confirm/" + confirmation_key;
this.thenOpen(confirmation_url);
});
// Make sure the realm creation page is loaded correctly
casper.then(function () {
this.waitUntilVisible(".pitch", function () {
this.test.assertSelectorContains(".pitch", "We just need you to do one last thing.");
});
this.waitUntilVisible("#id_email", function () {
this.test.assertEvalEquals(function () {
return $("#id_email").attr("placeholder");
}, email);
});
this.waitUntilVisible("label[for=id_team_name]", function () {
this.test.assertSelectorHasText("label[for=id_team_name]", "Organization name");
});
});
casper.then(function () {
this.waitUntilVisible('form[action^="/accounts/register/"]', function () {
this.fill(
'form[action^="/accounts/register/"]',
{
full_name: "Alice",
realm_name: organization_name,
realm_subdomain: subdomain,
password: "passwordwhichisreallyreallyreallycomplexandnotguessable",
terms: true,
realm_in_root_domain: false,
},
true
);
});
this.waitWhileVisible('form[action^="/accounts/register/"]', function () {
casper.test.assertUrlMatch(realm_host + "/", "Home page loaded");
});
});
casper.then(function () {
// The user is logged in to the newly created realm and the app is loaded
casper.waitUntilVisible(
".message_row",
function () {
this.test.assertTitleMatch(/ - Zulip$/, "Successfully logged into Zulip webapp");
},
null,
20000
);
});
common.then_log_out();
casper.run(function () {
casper.test.done();
});