"use strict"; 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"), "
Markdown Preview >> Test for markdown preview
", "Check markdown is previewed properly" ); }); }); common.then_log_out(); casper.run(function () { casper.test.done(); });