Files
zulip/frontend_tests/casper_tests/04-compose.js
Anders Kaseorg f3726db89a js: Normalize strings to double quotes.
Prettier would do this anyway, but it’s separated out for a more
reviewable diff.  Generated by ESLint.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-07-17 14:31:24 -07:00

233 lines
6.8 KiB
JavaScript

var common = require("../casper_lib/common.js");
common.start_and_log_in();
var msgs_qty;
casper.then(function () {
casper.waitUntilVisible("#zhome");
});
casper.then(function () {
msgs_qty = this.evaluate(function () {
return $("#zhome .message_row").length;
});
});
// Send a message to try replying to
common.then_send_many([
{ stream: "Verona",
subject: "Reply test",
content: "We reply to this message",
},
{ recipient: "cordelia@zulip.com",
content: "And reply to this message",
},
]);
casper.then(function () {
casper.waitFor(function check_length() {
return casper.evaluate(function (expected_length) {
return $("#zhome .message_row").length === expected_length;
}, msgs_qty + 2);
});
});
casper.then(function () {
// TODO: Test opening the compose box from the left side buttons
casper.click("body");
casper.page.sendEvent("keypress", "c");
});
function check_compose_is_cleared() {
common.check_form(
"#send_message_form",
{
stream_message_recipient_stream: "",
stream_message_recipient_topic: "",
},
"Stream empty on new compose"
);
}
casper.then(function () {
casper.waitUntilVisible("#compose", function () {
casper.test.assertVisible("#stream-message", "Stream input box visible");
check_compose_is_cleared();
casper.click("body");
casper.page.sendEvent("keypress", "x");
});
});
casper.then(function () {
casper.waitUntilVisible("#private_message_recipient", function () {
common.pm_recipient.expect("");
casper.click("body");
casper.page.sendEvent("keypress", "c");
});
});
casper.then(function () {
casper.waitUntilVisible("#stream-message", function () {
check_compose_is_cleared();
// Check that when you reply to a message it pre-populates the stream and subject fields
casper.click("body");
});
});
casper.then(function () {
casper.waitWhileVisible("#stream-message", function () {
casper.clickLabel("We reply to this message");
});
});
casper.then(function () {
casper.waitUntilVisible("#stream-message", function () {
common.check_form(
"#send_message_form",
{
stream_message_recipient_stream: "Verona",
stream_message_recipient_topic: "Reply test",
},
"Stream populated after reply by click"
);
// Or recipient field
casper.click("body");
casper.clickLabel("And reply to this message");
});
});
casper.then(function () {
casper.waitUntilVisible("#private_message_recipient", function () {
common.pm_recipient.expect("cordelia@zulip.com");
common.keypress(27); //escape
casper.page.sendEvent("keypress", "k");
casper.page.sendEvent("keypress", "r");
});
});
casper.then(function () {
casper.waitUntilVisible("#stream-message", function () {
common.check_form(
"#send_message_form",
{
stream_message_recipient_stream: "Verona",
stream_message_recipient_topic: "Reply test",
},
"Stream populated after reply with `r`"
);
// Test "closing" the compose box
casper.click("body");
});
});
casper.then(function () {
casper.waitWhileVisible("#stream-message", function () {
casper.test.assertNotVisible("#stream-message", "Close stream compose box");
casper.page.sendEvent("keypress", "x");
casper.click("body");
});
});
casper.then(function () {
casper.waitWhileVisible("#private-message", function () {
casper.test.assertNotVisible("#private-message", "Close PM compose box");
});
});
// Test focus after narrowing to PMs with a user and typing 'c'
casper.then(function () {
casper.click('*[title="Narrow to your private messages with Cordelia Lear"]');
});
casper.then(function () {
var cordelia_user_id = common.get_user_id("cordelia@zulip.com");
var pm_li = 'li[data-user-ids-string="' + cordelia_user_id + '"].expanded_private_message.active-sub-filter';
casper.waitUntilVisible(pm_li, function () {
casper.page.sendEvent("keypress", "c");
});
});
casper.then(function () {
casper.waitUntilVisible("#compose", function () {
casper.test.assertEval(function () {
return document.activeElement === $(".compose_table #stream_message_recipient_stream")[0];
}, "Stream box focused after narrowing to PMs with a user and pressing `c`");
});
});
// Make sure multiple PM recipients display properly.
var recipients = ["cordelia@zulip.com", "othello@zulip.com"];
casper.then(function () {
common.keypress(27); // escape to dismiss compose box
});
casper.waitWhileVisible(".message_comp");
common.then_send_message("private", {
recipient: recipients.join(","),
outside_view: true,
content: "A huddle to check spaces",
});
casper.then(function () {
common.keypress(27); // escape to dismiss compose box
});
casper.then(function () {
common.un_narrow();
});
casper.waitUntilVisible("#zhome", function () {
casper.clickLabel("A huddle to check spaces");
});
casper.then(function () {
casper.waitUntilVisible("#compose", function () {
common.pm_recipient.expect(recipients.join(","));
});
});
casper.then(function () {
casper.waitUntilVisible("#markdown_preview", function () {
casper.test.assertNotVisible("#undo_markdown_preview", "Write button is hidden");
casper.click("#markdown_preview");
});
});
casper.then(function () {
casper.waitWhileVisible("#markdown_preview", function () {
casper.test.assertVisible("#undo_markdown_preview", "Write button is visible");
casper.test.assertEquals(casper.getHTML("#preview_content"), "Nothing to preview", "Nothing to preview");
casper.click("#undo_markdown_preview");
});
});
casper.then(function () {
casper.waitWhileVisible("#undo_markdown_preview", function () {
casper.test.assertVisible("#markdown_preview", "Preview button is visible.");
casper.test.assertNotVisible("#undo_markdown_preview", "Write button is hidden.");
casper.test.assertEquals(casper.getHTML("#preview_content"), "", "Markdown preview area is empty");
casper.fill('form[action^="/json/messages"]', {
content: "**Markdown Preview** >> Test for markdown preview",
}, false);
casper.click("#markdown_preview");
});
});
casper.then(function () {
casper.waitForSelectorTextChange("#preview_content", function () {
casper.test.assertEquals(casper.getHTML("#preview_content"), "<p><strong>Markdown Preview</strong> &gt;&gt; Test for markdown preview</p>", "Check markdown is previewed properly");
});
});
common.then_log_out();
casper.run(function () {
casper.test.done();
});