summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorLuiza Pagliari <lpagliari@gmail.com>2017-04-04 13:07:40 -0300
committerLuiza Pagliari <lpagliari@gmail.com>2017-04-04 13:07:40 -0300
commit5e907005611caa9ab2b97246f38ad0a086766b80 (patch)
tree26e7e07f3ba6e1bae64a20a82db93c0082942879 /tests
parent009cd3124370d44a9c567332bf3be63826fd95b4 (diff)
downloadetherpad-lite-5e907005611caa9ab2b97246f38ad0a086766b80.zip
[test] Create tests for automatic reconnection on error
Diffstat (limited to 'tests')
-rw-r--r--tests/frontend/specs/automatic_reconnect.js71
1 files changed, 71 insertions, 0 deletions
diff --git a/tests/frontend/specs/automatic_reconnect.js b/tests/frontend/specs/automatic_reconnect.js
new file mode 100644
index 00000000..e2d2df36
--- /dev/null
+++ b/tests/frontend/specs/automatic_reconnect.js
@@ -0,0 +1,71 @@
+describe('Automatic pad reload on Force Reconnect message', function() {
+ var padId, $originalPadFrame;
+
+ beforeEach(function(done) {
+ padId = helper.newPad(function() {
+ // enable userdup error to have timer to force reconnect
+ var $errorMessageModal = helper.padChrome$('#connectivity .userdup');
+ $errorMessageModal.addClass('with_reconnect_timer');
+
+ // make sure there's a timeout set, otherwise automatic reconnect won't be enabled
+ helper.padChrome$.window.clientVars.automaticReconnectionTimeout = 2;
+
+ // open same pad on another iframe, to force userdup error
+ var $otherIframeWithSamePad = $('<iframe src="/p/' + padId + '" style="height: 1px;"></iframe>');
+ $originalPadFrame = $('#iframe-container iframe');
+ $otherIframeWithSamePad.insertAfter($originalPadFrame);
+
+ // wait for modal to be displayed
+ helper.waitFor(function() {
+ return $errorMessageModal.is(':visible');
+ }, 50000).done(done);
+ });
+
+ this.timeout(60000);
+ });
+
+ it('displays a count down timer to automatically reconnect', function(done) {
+ var $errorMessageModal = helper.padChrome$('#connectivity .userdup');
+ var $countDownTimer = $errorMessageModal.find('.reconnecttimer');
+
+ expect($countDownTimer.is(':visible')).to.be(true);
+
+ done();
+ });
+
+ context('and user clicks on Cancel', function() {
+ beforeEach(function() {
+ var $errorMessageModal = helper.padChrome$('#connectivity .userdup');
+ $errorMessageModal.find('#cancelreconnect').click();
+ });
+
+ it('does not show Cancel button nor timer anymore', function(done) {
+ var $errorMessageModal = helper.padChrome$('#connectivity .userdup');
+ var $countDownTimer = $errorMessageModal.find('.reconnecttimer');
+ var $cancelButton = $errorMessageModal.find('#cancelreconnect');
+
+ expect($countDownTimer.is(':visible')).to.be(false);
+ expect($cancelButton.is(':visible')).to.be(false);
+
+ done();
+ });
+ });
+
+ context('and user does not click on Cancel until timer expires', function() {
+ var padWasReloaded = false;
+
+ beforeEach(function() {
+ $originalPadFrame.one('load', function() {
+ padWasReloaded = true;
+ });
+ });
+
+ it('reloads the pad', function(done) {
+ helper.waitFor(function() {
+ return padWasReloaded;
+ }, 5000).done(done);
+
+ this.timeout(5000);
+ });
+ });
+});