Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 9 additions & 7 deletions InfoLogger/public/log/statusBar.js
Original file line number Diff line number Diff line change
Expand Up @@ -90,18 +90,20 @@ const applicationMessage = (model) => model.log.list.length > model.log.applicat
: null;

/**
* Show some application preferences: auto-scroll and inspector checkboxes
* Show some application preferences: inspector checkbox, plus autoscroll whilst live mode is running
* (could be evolve into a preference panel in the future if more options are added)
* @param {Model} model - root model of the application
* @returns {vnode} - the view of the application options
*/
const applicationOptions = (model) => [
h('label.d-inline', { title: 'Scroll down in live mode on new log incoming' }, h('input', {
type: 'checkbox',
checked: model.log.autoScrollLive,
onchange: () => model.log.toggleAutoScroll(),
}), ' Autoscroll'),
h('span.mh1'),
model.log.isLiveModeRunning() && [
h('label.d-inline', { title: 'Scroll down in live mode on new log incoming' }, h('input', {
type: 'checkbox',
checked: model.log.autoScrollLive,
onchange: () => model.log.toggleAutoScroll(),
}), ' Autoscroll'),
h('span.mh1'),
],
h('label.d-inline', { title: 'Show details of selected log' }, h('input', {
type: 'checkbox',
checked: model.inspectorEnabled,
Expand Down
54 changes: 48 additions & 6 deletions InfoLogger/test/public/status-bar-mocha.js
Original file line number Diff line number Diff line change
Expand Up @@ -319,14 +319,56 @@ describe('Status Bar test-suite', async () => {
});

describe('Application Options', () => {
it('should toggle autoscroll when its checkbox is clicked', async () => {
await page.click(AUTOSCROLL_SELECTOR);
describe('Autoscroll', () => {
describe('in query mode', () => {
it('should not display autoscroll option when in MODE.QUERY', async () => {
await page.evaluate(() => model.log.liveStop());
await page.waitForFunction(
(selector) => !document.querySelector(selector),
{ timeout: 2000 },
AUTOSCROLL_SELECTOR,
);
});
});

const checkedAfter = await page.$eval(AUTOSCROLL_SELECTOR, (el) => el.checked);
const autoScrollModelValue = await page.evaluate(() => window.model.log.autoScrollLive);
describe('in live mode', () => {
beforeEach(async () => {
await page.evaluate(() => model.log.liveStop());
await page.waitForSelector('#live-button:not([disabled])');
await page.click('#live-button');
await page.waitForFunction(() => model.log.isLiveModeRunning());
});

assert.strictEqual(autoScrollModelValue, checkedAfter);
assert.strictEqual(checkedAfter, true);
after(async () => {
await page.evaluate(() => model.log.liveStop());
});

it('should not display autoscroll option when in MODE.LIVE.PAUSED', async () => {
await page.click('#live-button');

await page.waitForFunction(
(selector) => !document.querySelector(selector),
{ timeout: 2000 },
AUTOSCROLL_SELECTOR,
);
});

it('should display autoscroll option when in MODE.LIVE.RUNNING', async () => {
await page.waitForSelector(AUTOSCROLL_SELECTOR, { timeout: 2000 });
});

it('should toggle autoscroll when its checkbox is clicked', async () => {
await page.waitForSelector(AUTOSCROLL_SELECTOR, { timeout: 2000 });
const checkedBefore = await page.$eval(AUTOSCROLL_SELECTOR, (el) => el.checked);
await page.click(AUTOSCROLL_SELECTOR);

const checkedAfter = await page.$eval(AUTOSCROLL_SELECTOR, (el) => el.checked);
const autoScrollModelValue = await page.evaluate(() => model.log.autoScrollLive);

assert.strictEqual(checkedAfter, !checkedBefore);
assert.strictEqual(autoScrollModelValue, checkedAfter);
});
});
});

it('should toggle inspector when its checkbox is clicked', async () => {
Expand Down
Loading