The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
grafana/e2e/dashboards-suite/dashboard-share-snapshot-cr...

98 lines
3.1 KiB

import { SnapshotCreateResponse } from '../../public/app/features/dashboard/services/SnapshotSrv';
import { e2e } from '../utils';
import { fromBaseUrl } from '../utils/support/url';
import '../utils/support/clipboard';
describe('Snapshots', () => {
beforeEach(() => {
e2e.flows.login(Cypress.env('USERNAME'), Cypress.env('PASSWORD'));
});
it('Create a snapshot dashboard', () => {
// Opening a dashboard
cy.intercept({
pathname: '/api/ds/query',
}).as('query');
e2e.flows.openDashboard({
uid: 'ZqZnVvFZz',
queryParams: { '__feature.scenes': true, '__feature.newDashboardSharingComponent': true },
});
cy.wait('@query');
//TODO Failing in CI/CD. Fix it
// cy.wrap(
// Cypress.automation('remote:debugger:protocol', {
// command: 'Browser.grantPermissions',
// params: {
// permissions: ['clipboardReadWrite', 'clipboardSanitizedWrite'],
// origin: window.location.origin,
// },
// })
// );
const panelsToCheck = [
'Raw Data Graph',
'Last non-null',
'min',
'Max',
'The data from graph above with seriesToColumns transform',
];
// Open the sharing drawer
e2e.pages.Dashboard.DashNav.newShareButton.arrowMenu().click();
e2e.pages.Dashboard.DashNav.newShareButton.menu.shareSnapshot().click();
// Publish snapshot
cy.intercept('POST', '/api/snapshots').as('create');
e2e.pages.ShareDashboardDrawer.ShareSnapshot.publishSnapshot().click();
cy.wait('@create')
.its('response')
.then((rs) => {
expect(rs.statusCode).eq(200);
const body: SnapshotCreateResponse = rs.body;
cy.visit(fromBaseUrl(getSnapshotUrl(body.key)));
// Validate the dashboard controls are rendered
e2e.pages.Dashboard.Controls().should('exist');
// Validate the panels are rendered
for (const title of panelsToCheck) {
e2e.components.Panels.Panel.title(title).should('be.visible');
}
});
// Copy link button should be visible
// e2e.pages.ShareDashboardDrawer.ShareSnapshot.copyUrlButton().should('exist');
//TODO Failing in CI/CD. Fix it
// Copy the snapshot URL form the clipboard and open the snapshot
// e2e.pages.ShareDashboardDrawer.ShareSnapshot.copyUrlButton()
// .click()
// .then(() => {
// cy.copyFromClipboard().then((url) => {
// cy.wrap(url).as('url');
// });
// })
// .then(() => {
// cy.get('@url').then((url) => {
// e2e.pages.ShareDashboardDrawer.ShareSnapshot.visit(getSnapshotKey(String(url)));
// });
//
// // Validate the dashboard controls are rendered
// e2e.pages.Dashboard.Controls().should('exist');
//
// // Validate the panels are rendered
// for (const title of panelsToCheck) {
// e2e.components.Panels.Panel.title(title).should('be.visible');
// }
// });
});
});
const getSnapshotUrl = (uid: string): string => {
return `/dashboard/snapshot/${uid}`;
};
// const getSnapshotKey = (url: string): string => {
// return url.split('/').pop();
// };