Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
8900e24
[Reporting] Revisit handling timeouts for different phases of screens…
tsullivan Oct 8, 2021
f9b5487
Merge remote-tracking branch 'elastic/master' into reporting/fix-wait…
tsullivan Oct 11, 2021
f7477ee
remove translations for changed text
tsullivan Oct 11, 2021
95afa36
add wip unit test
tsullivan Oct 11, 2021
32e98d6
Merge branch 'master' into reporting/fix-wait-for-render
kibanamachine Oct 11, 2021
143096c
Merge branch 'master' into reporting/fix-wait-for-render
kibanamachine Oct 12, 2021
9fb53d0
simplify class
tsullivan Oct 12, 2021
d43da2f
todo more testing
tsullivan Oct 12, 2021
8662801
Merge branch 'master' into reporting/fix-wait-for-render
kibanamachine Oct 12, 2021
e50eebf
Merge remote-tracking branch 'elastic/master' into reporting/fix-wait…
tsullivan Oct 13, 2021
d998944
fix ts
tsullivan Oct 13, 2021
28cb260
Merge remote-tracking branch 'elastic/master' into reporting/fix-wait…
tsullivan Oct 13, 2021
996c8d0
update snapshots
tsullivan Oct 13, 2021
8161b2d
Merge remote-tracking branch 'elastic/master' into reporting/fix-wait…
tsullivan Oct 14, 2021
63fd188
simplify open_url
tsullivan Oct 14, 2021
59d198e
fixup me
tsullivan Oct 14, 2021
da28d91
move setupPage to a method of the ObservableHandler class
tsullivan Oct 14, 2021
273499b
do not pass entire config object to helper functions
tsullivan Oct 14, 2021
d3e31d5
distinguish internal timeouts vs external timeout
tsullivan Oct 14, 2021
a4d3303
Merge remote-tracking branch 'elastic/master' into reporting/fix-wait…
tsullivan Oct 14, 2021
c6f1bd9
add tests for waitUntil
tsullivan Oct 14, 2021
f06e120
checkIsPageOpen test
tsullivan Oct 14, 2021
7087cbf
restore passing of renderErrors
tsullivan Oct 14, 2021
14f7ca3
Merge remote-tracking branch 'elastic/master' into reporting/fix-wait…
tsullivan Oct 16, 2021
cc08254
updates per feedback
tsullivan Oct 16, 2021
e85e49a
Update x-pack/plugins/reporting/server/lib/screenshots/observable_han…
tsullivan Oct 16, 2021
fffdf1d
Update x-pack/plugins/reporting/server/lib/screenshots/observable_han…
tsullivan Oct 16, 2021
34545a2
Update x-pack/plugins/reporting/server/lib/screenshots/observable_han…
tsullivan Oct 16, 2021
4423661
Update x-pack/plugins/reporting/server/lib/screenshots/observable_han…
tsullivan Oct 16, 2021
7ddae03
Update x-pack/plugins/reporting/server/lib/screenshots/observable_han…
tsullivan Oct 16, 2021
0314f28
fix parsing
tsullivan Oct 16, 2021
af6016e
apply simplifications consistently
tsullivan Oct 16, 2021
273e1d7
dont main waitUntil a higher order component
tsullivan Oct 16, 2021
2acdf66
resolve the timeouts options outside of the service
tsullivan Oct 16, 2021
7b2f160
comment correction
tsullivan Oct 16, 2021
6349ebd
Merge branch 'master' into reporting/fix-wait-for-render
kibanamachine Oct 16, 2021
da74e88
Merge branch 'master' into reporting/fix-wait-for-render
kibanamachine Oct 18, 2021
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

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
*/

import { set } from 'lodash';
import { durationToNumber } from '../../../common/schema_utils';
import { HeadlessChromiumDriver } from '../../browsers';
import {
createMockBrowserDriverFactory,
Expand All @@ -25,6 +26,7 @@ describe('getNumberOfItems', () => {
let layout: LayoutInstance;
let logger: jest.Mocked<LevelLogger>;
let browser: HeadlessChromiumDriver;
let timeout: number;

beforeEach(async () => {
const schema = createMockConfigSchema(set({}, 'capture.timeouts.waitForElements', 0));
Expand All @@ -34,6 +36,7 @@ describe('getNumberOfItems', () => {
captureConfig = config.get('capture');
layout = createMockLayoutInstance(captureConfig);
logger = createMockLevelLogger();
timeout = durationToNumber(captureConfig.timeouts.waitForElements);

await createMockBrowserDriverFactory(core, logger, {
evaluate: jest.fn(
Expand Down Expand Up @@ -62,7 +65,7 @@ describe('getNumberOfItems', () => {
<div itemsSelector="10" />
`;

await expect(getNumberOfItems(captureConfig, browser, layout, logger)).resolves.toBe(10);
await expect(getNumberOfItems(timeout, browser, layout, logger)).resolves.toBe(10);
});

it('should determine the number of items by selector ', async () => {
Expand All @@ -72,7 +75,7 @@ describe('getNumberOfItems', () => {
<renderedSelector />
`;

await expect(getNumberOfItems(captureConfig, browser, layout, logger)).resolves.toBe(3);
await expect(getNumberOfItems(timeout, browser, layout, logger)).resolves.toBe(3);
});

it('should fall back to the selector when the attribute is empty', async () => {
Expand All @@ -82,6 +85,6 @@ describe('getNumberOfItems', () => {
<renderedSelector />
`;

await expect(getNumberOfItems(captureConfig, browser, layout, logger)).resolves.toBe(2);
await expect(getNumberOfItems(timeout, browser, layout, logger)).resolves.toBe(2);
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,13 @@
*/

import { i18n } from '@kbn/i18n';
import { durationToNumber } from '../../../common/schema_utils';
import { LevelLogger, startTrace } from '../';
import { HeadlessChromiumDriver } from '../../browsers';
import { CaptureConfig } from '../../types';
import { LayoutInstance } from '../layouts';
import { CONTEXT_GETNUMBEROFITEMS, CONTEXT_READMETADATA } from './constants';

export const getNumberOfItems = async (
captureConfig: CaptureConfig,
timeout: number,
browser: HeadlessChromiumDriver,
layout: LayoutInstance,
logger: LevelLogger
Expand All @@ -33,7 +31,6 @@ export const getNumberOfItems = async (
// the dashboard is using the `itemsCountAttribute` attribute to let us
// know how many items to expect since gridster incrementally adds panels
// we have to use this hint to wait for all of them
const timeout = durationToNumber(captureConfig.timeouts.waitForElements);
await browser.waitForSelector(
`${renderCompleteSelector},[${itemsCountAttribute}]`,
{ timeout },
Expand Down Expand Up @@ -65,11 +62,8 @@ export const getNumberOfItems = async (
logger.error(err);
throw new Error(
i18n.translate('xpack.reporting.screencapture.readVisualizationsError', {
defaultMessage: `An error occurred when trying to read the page for visualization panel info. You may need to increase '{configKey}'. {error}`,
values: {
error: err,
configKey: 'xpack.reporting.capture.timeouts.waitForElements',
},
defaultMessage: `An error occurred when trying to read the page for visualization panel info: {error}`,
values: { error: err },
})
);
}
Expand Down
19 changes: 19 additions & 0 deletions x-pack/plugins/reporting/server/lib/screenshots/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,19 @@ import { LayoutInstance } from '../layouts';

export { getScreenshots$ } from './observable';

export interface PhaseInstance {
timeoutValue: number;
configValue: string;
label: string;
}

export interface PhaseTimeouts {
openUrl: PhaseInstance;
waitForElements: PhaseInstance;
renderComplete: PhaseInstance;
loadDelay: number;
}

export interface ScreenshotObservableOpts {
logger: LevelLogger;
urlsOrUrlLocatorTuples: UrlOrUrlLocatorTuple[];
Expand Down Expand Up @@ -49,6 +62,12 @@ export interface Screenshot {
description: string | null;
}

export interface PageSetupResults {
elementsPositionAndAttributes: ElementsPositionAndAttribute[] | null;
timeRange: string | null;
error?: Error;
}

export interface ScreenshotResults {
timeRange: string | null;
screenshots: Screenshot[];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,6 @@ describe('Screenshot Observable Pipeline', () => {
},
],
"error": undefined,
"renderErrors": undefined,
"screenshots": Array [
Object {
"data": Object {
Expand Down Expand Up @@ -173,7 +172,6 @@ describe('Screenshot Observable Pipeline', () => {
},
],
"error": undefined,
"renderErrors": undefined,
"screenshots": Array [
Object {
"data": Object {
Expand Down Expand Up @@ -225,7 +223,6 @@ describe('Screenshot Observable Pipeline', () => {
},
],
"error": undefined,
"renderErrors": undefined,
"screenshots": Array [
Object {
"data": Object {
Expand Down Expand Up @@ -314,8 +311,7 @@ describe('Screenshot Observable Pipeline', () => {
},
},
],
"error": [Error: An error occurred when trying to read the page for visualization panel info. You may need to increase 'xpack.reporting.capture.timeouts.waitForElements'. Error: Mock error!],
"renderErrors": undefined,
"error": [Error: The "wait for elements" phase encountered an error: Error: An error occurred when trying to read the page for visualization panel info: Error: Mock error!],
"screenshots": Array [
Object {
"data": Object {
Expand Down Expand Up @@ -357,8 +353,7 @@ describe('Screenshot Observable Pipeline', () => {
},
},
],
"error": [Error: An error occurred when trying to read the page for visualization panel info. You may need to increase 'xpack.reporting.capture.timeouts.waitForElements'. Error: Mock error!],
"renderErrors": undefined,
"error": [Error: An error occurred when trying to read the page for visualization panel info: Error: Mock error!],
"screenshots": Array [
Object {
"data": Object {
Expand Down Expand Up @@ -465,7 +460,6 @@ describe('Screenshot Observable Pipeline', () => {
},
],
"error": undefined,
"renderErrors": undefined,
"screenshots": Array [
Object {
"data": Object {
Expand Down
Loading