From ef2a929016452293047f604b71a29fb3324af4b9 Mon Sep 17 00:00:00 2001 From: John McLear Date: Sat, 9 Jan 2021 19:48:15 +0000 Subject: [PATCH] test coverage --- tests/frontend/specs/enter.js | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/tests/frontend/specs/enter.js b/tests/frontend/specs/enter.js index 6108d7f82..37f6b62fc 100644 --- a/tests/frontend/specs/enter.js +++ b/tests/frontend/specs/enter.js @@ -1,13 +1,13 @@ +'use strict'; + describe('enter keystroke', function () { // create a new pad before each test run beforeEach(function (cb) { helper.newPad(cb); this.timeout(60000); }); - it('creates a new line & puts cursor onto a new line', function (done) { const inner$ = helper.padInner$; - const chrome$ = helper.padChrome$; // get the first text element out of the inner iframe const $firstTextElement = inner$('div').first(); @@ -29,4 +29,32 @@ describe('enter keystroke', function () { done(); }); }); + + it('enter is always visible after event', async function () { + const originalLength = helper.padInner$('div').length; + let $lastLine = helper.padInner$('div').last(); + + // simulate key presses to enter content + let i = 0; + const numberOfLines = 15; + let previousLineLength = originalLength; + while (i < numberOfLines) { + $lastLine = helper.padInner$('div').last(); + $lastLine.sendkeys('{enter}'); + await helper.waitFor(() => helper.padInner$('div').length > previousLineLength); + previousLineLength = helper.padInner$('div').length; + // check we can see the caret.. + + i++; + } + await helper.waitFor(() => helper.padInner$('div').length === numberOfLines + originalLength); + + // is edited line fully visible? + const lastLine = helper.padInner$('div').last(); + const bottomOfLastLine = lastLine.offset().top + lastLine.height(); + const scrolledWindow = helper.padChrome$('iframe')[0]; + const scrolledAmount = scrolledWindow.contentWindow.pageYOffset + + scrolledWindow.contentWindow.innerHeight; + await helper.waitFor(() => scrolledAmount >= bottomOfLastLine); + }); });