mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 13:33:24 +00:00
We now use `wait_for_message_fully_processed` to check that messages are fully rendered. Before this, we had loopholes where messages sent outside the view were effectively ignored. Now we explicitly ignore the check for the one place we do that. The more important behavior is for messages that get sent to the current view. Before this change, the older version of this function declared victory as soon as we put the server version of a locally echoed message into the current message list's data. This fixes flaky behavior with 07-stars in particular, since we need the star icon on our last message to be there before we click on it. Because this function is more robust now, we can remove some redundant checks in 08-edit.js.
233 lines
6.8 KiB
JavaScript
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> >> Test for markdown preview</p>", "Check markdown is previewed properly");
|
|
});
|
|
});
|
|
|
|
common.then_log_out();
|
|
|
|
casper.run(function () {
|
|
casper.test.done();
|
|
});
|