etherpad-lite/tests/frontend/specs/pageupdown.js

62 lines
2.9 KiB
JavaScript

'use strict';
describe('Page Up & Page Down', function () {
beforeEach(function (cb) {
helper.newPad({
cb: async () => {
await helper.clearPad();
// 200 lines
await helper.edit(
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n' +
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nhello');
cb();
},
});
});
// scrolls up 2 times
it('scrolls up on key stroke', async function () {
await helper.edit('Line 80', 80);
await helper.waitForPromise(() => 81 === helper.caretLineNumber());
// because we don't send the edit via key events but using `sendkeys` the viewport is
// not automatically scrolled. The line below puts the viewport top exactly to where
// the caret is.
let lineOffset = helper.linesDiv()[80][0].offsetTop;
helper.padOuter$('#outerdocbody').parent().scrollTop(lineOffset);
let intitialLineNumber = helper.caretLineNumber();
helper.pageUp();
await helper.waitForPromise(() => intitialLineNumber > helper.caretLineNumber() &&
lineOffset > helper.padOuter$('#outerdocbody').parent().scrollTop());
intitialLineNumber = helper.caretLineNumber();
lineOffset = helper.padOuter$('#outerdocbody').parent().scrollTop();
helper.pageUp();
await helper.waitForPromise(() => intitialLineNumber > helper.caretLineNumber() &&
lineOffset > helper.padOuter$('#outerdocbody').parent().scrollTop());
});
// scrolls down 3 times
it('scrolls down on key stroke', async function () {
// this places the caret in the first line
await helper.edit('Line 1', 1);
let currentLineNumber = helper.caretLineNumber();
let lineOffset = helper.padOuter$('#outerdocbody').parent().scrollTop();
helper.pageDown();
await helper.waitForPromise(() => currentLineNumber < helper.caretLineNumber() &&
lineOffset < helper.padOuter$('#outerdocbody').parent().scrollTop());
currentLineNumber = helper.caretLineNumber();
lineOffset = helper.padOuter$('#outerdocbody').parent().scrollTop();
helper.pageDown();
await helper.waitForPromise(() => currentLineNumber < helper.caretLineNumber() &&
lineOffset < helper.padOuter$('#outerdocbody').parent().scrollTop());
currentLineNumber = helper.caretLineNumber();
lineOffset = helper.padOuter$('#outerdocbody').parent().scrollTop();
helper.pageDown();
await helper.waitForPromise(() => currentLineNumber < helper.caretLineNumber() &&
lineOffset < helper.padOuter$('#outerdocbody').parent().scrollTop());
});
});