[Test] Add tag cloud visualization to dashboard in functional test for reporting (#87600)

* add tag cloud to dashboard in kibana archive

* add pdf snapshot testing to downloaded pdfs

* update png baseline image

* remove pdf snapshot testing

* rename mislabeled variable

* fix test comparison

* remove unnecessary pdf utf8 checks

* Update screenshots.ts

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
Tim Sullivan 2021-01-15 22:05:14 -07:00 committed by GitHub
parent 273ad4e505
commit abffb19889
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 1311 additions and 1623 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 617 KiB

After

Width:  |  Height:  |  Size: 736 KiB

View file

@ -25,7 +25,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
const es = getService('es');
const testSubjects = getService('testSubjects');
describe('Screenshots', () => {
describe('Dashboard Reporting Screenshots', () => {
before('initialize tests', async () => {
log.debug('ReportingPage:initTests');
await esArchiver.loadIfNeeded('reporting/ecommerce');
@ -93,8 +93,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
});
});
describe('Preserve Layout', () => {
it('matches baseline report', async function () {
describe('PNG Layout', () => {
it('downloads a PNG file', async function () {
const writeSessionReport = async (name: string, rawPdf: Buffer, reportExt: string) => {
const sessionDirectory = path.resolve(REPORTS_FOLDER, 'session');
await mkdirAsync(sessionDirectory, { recursive: true });
@ -122,14 +122,32 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
const reportData = await PageObjects.reporting.getRawPdfReportData(url);
const reportFileName = 'dashboard_preserve_layout';
const sessionReportPath = await writeSessionReport(reportFileName, reportData, 'png');
const percentSimilar = await checkIfPngsMatch(
const percentDiff = await checkIfPngsMatch(
sessionReportPath,
getBaselineReportPath(reportFileName, 'png'),
config.get('screenshots.directory'),
log
);
expect(percentSimilar).to.be.lessThan(0.1);
expect(percentDiff).to.be.lessThan(0.09);
});
});
describe('Preserve Layout', () => {
it('downloads a PDF file', async function () {
// Generating and then comparing reports can take longer than the default 60s timeout because the comparePngs
// function is taking about 15 seconds per comparison in jenkins.
this.timeout(300000);
await PageObjects.common.navigateToApp('dashboard');
await PageObjects.dashboard.loadSavedDashboard('Ecom Dashboard');
await PageObjects.reporting.openPdfReportingPanel();
await PageObjects.reporting.clickGenerateReportButton();
const url = await PageObjects.reporting.getReportURL(60000);
const res = await PageObjects.reporting.getResponse(url);
expect(res.status).to.equal(200);
expect(res.get('content-type')).to.equal('application/pdf');
});
});
});

View file

@ -20,7 +20,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
'visEditor',
]);
describe('Visualize', () => {
describe('Visualize Reporting Screenshots', () => {
before('initialize tests', async () => {
log.debug('ReportingPage:initTests');
await esArchiver.loadIfNeeded('reporting/ecommerce');