* add playwright test and plugin-e2e * run tests in ci * add ds config tests * add panel edit tests * add annotation test * add variable edit page tests * add explore page tests * add panel plugin tests * add readme * remove comments * fix broken test * remove user.json * remove newline in starlark * fix lint issue * ignore failure of playwright tests * update code owners * add detailed error messages in every expect * update message frame * fix link * upload report to gcp * echo url * add playwright developer guide * bump plugin-e2e * add custom provisioning dir * update plugin-e2e * remove not used imports * fix typo * minor fixes * use latest version of plugin-e2e * fix broken link * use latest plugin-e2e * add feature toggle scenario verification tests * bump version * use auth file from package * fix type error * add panel data assertions * rename parent dir and bump version * fix codeowners * reset files * remove not used file * update plugin-e2e * separate tests per role * pass prov dir * skip using provisioning fixture * wip * fix permission test * move to e2e dir * fix path to readme * post comment with report url * format starlark * post comment with report url * post comment with report url * fix token * make test fail * fix exit code * bump version * bump to latest plugin-e2e * revert reporting message * remove comments * readding report comment * change exit code * format starlark * force test to fail * add new step that posts comment * fix link * use latest playwright image * fix failing test * format starlark * remove unused fixture Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com> --------- Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
111 lines
4.2 KiB
TypeScript
111 lines
4.2 KiB
TypeScript
import { expect, test, PanelEditPage, DashboardPage } from '@grafana/plugin-e2e';
|
|
|
|
import { formatExpectError } from '../errors';
|
|
import { successfulDataQuery } from '../mocks/queries';
|
|
|
|
const REACT_TABLE_DASHBOARD = { uid: 'U_bZIMRMk' };
|
|
|
|
test.describe('panel edit page', () => {
|
|
test('table panel data assertions with provisioned dashboard', async ({
|
|
page,
|
|
selectors,
|
|
grafanaVersion,
|
|
request,
|
|
}) => {
|
|
const panelEditPage = new PanelEditPage(
|
|
{ page, selectors, grafanaVersion, request },
|
|
{ dashboard: REACT_TABLE_DASHBOARD, id: '4' }
|
|
);
|
|
await panelEditPage.goto();
|
|
await expect(
|
|
panelEditPage.panel.locator,
|
|
formatExpectError('Could not locate panel in panel edit page')
|
|
).toBeVisible();
|
|
await expect(
|
|
panelEditPage.panel.fieldNames,
|
|
formatExpectError('Could not locate header elements in table panel')
|
|
).toContainText(['Field', 'Max', 'Mean', 'Last']);
|
|
});
|
|
|
|
test('table panel data assertions', async ({ panelEditPage }) => {
|
|
await panelEditPage.mockQueryDataResponse(successfulDataQuery, 200);
|
|
await panelEditPage.datasource.set('gdev-testdata');
|
|
await panelEditPage.setVisualization('Table');
|
|
await panelEditPage.refreshPanel();
|
|
await expect(
|
|
panelEditPage.panel.locator,
|
|
formatExpectError('Could not locate panel in panel edit page')
|
|
).toBeVisible();
|
|
await expect(
|
|
panelEditPage.panel.fieldNames,
|
|
formatExpectError('Could not locate header elements in table panel')
|
|
).toContainText(['col1', 'col2']);
|
|
await expect(panelEditPage.panel.data, formatExpectError('Could not locate headers in table panel')).toContainText([
|
|
'val1',
|
|
'val2',
|
|
'val3',
|
|
'val4',
|
|
]);
|
|
});
|
|
|
|
test('timeseries panel - table view assertions', async ({ panelEditPage }) => {
|
|
await panelEditPage.mockQueryDataResponse(successfulDataQuery, 200);
|
|
await panelEditPage.datasource.set('gdev-testdata');
|
|
await panelEditPage.setVisualization('Time series');
|
|
await panelEditPage.refreshPanel();
|
|
await panelEditPage.toggleTableView();
|
|
await expect(
|
|
panelEditPage.panel.locator,
|
|
formatExpectError('Could not locate panel in panel edit page')
|
|
).toBeVisible();
|
|
await expect(
|
|
panelEditPage.panel.fieldNames,
|
|
formatExpectError('Could not locate header elements in table panel')
|
|
).toContainText(['col1', 'col2']);
|
|
await expect(
|
|
panelEditPage.panel.data,
|
|
formatExpectError('Could not locate data elements in table panel')
|
|
).toContainText(['val1', 'val2', 'val3', 'val4']);
|
|
});
|
|
});
|
|
|
|
test.describe('dashboard page', () => {
|
|
test('getting panel by title', async ({ page, selectors, grafanaVersion, request }) => {
|
|
const dashboardPage = new DashboardPage({ page, selectors, grafanaVersion, request }, REACT_TABLE_DASHBOARD);
|
|
await dashboardPage.goto();
|
|
const panel = await dashboardPage.getPanelByTitle('Colored background');
|
|
await expect(panel.fieldNames).toContainText(['Field', 'Max', 'Mean', 'Last']);
|
|
});
|
|
|
|
test('getting panel by id', async ({ page, selectors, grafanaVersion, request }) => {
|
|
const dashboardPage = new DashboardPage({ page, selectors, grafanaVersion, request }, REACT_TABLE_DASHBOARD);
|
|
await dashboardPage.goto();
|
|
const panel = await dashboardPage.getPanelById('4');
|
|
await expect(panel.fieldNames, formatExpectError('Could not locate header elements in table panel')).toContainText([
|
|
'Field',
|
|
'Max',
|
|
'Mean',
|
|
'Last',
|
|
]);
|
|
});
|
|
});
|
|
|
|
test.describe('explore page', () => {
|
|
test('table panel', async ({ explorePage }) => {
|
|
const url =
|
|
'left=%7B"datasource":"grafana","queries":%5B%7B"queryType":"randomWalk","refId":"A","datasource":%7B"type":"datasource","uid":"grafana"%7D%7D%5D,"range":%7B"from":"1547161200000","to":"1576364400000"%7D%7D&orgId=1';
|
|
await explorePage.goto({
|
|
queryParams: new URLSearchParams(url),
|
|
});
|
|
await expect(
|
|
explorePage.timeSeriesPanel.locator,
|
|
formatExpectError('Could not locate time series panel in explore page')
|
|
).toBeVisible();
|
|
await expect(
|
|
explorePage.tablePanel.locator,
|
|
formatExpectError('Could not locate table panel in explore page')
|
|
).toBeVisible();
|
|
await expect(explorePage.tablePanel.fieldNames).toContainText(['time', 'A-series']);
|
|
});
|
|
});
|