import { expect, test } from '@grafana/plugin-e2e'; import { formatExpectError } from '../errors'; test.describe( 'plugin-e2e-api-tests admin', { tag: ['@plugins'], }, () => { test.describe('test createDataSourceConfigPage fixture, saveAndTest and toBeOK matcher', () => { test('invalid credentials should return an error', async ({ createDataSourceConfigPage, page }) => { const configPage = await createDataSourceConfigPage({ type: 'prometheus' }); await page.getByPlaceholder('http://localhost:9090').fill('http://localhost:9090'); await expect( configPage.saveAndTest(), formatExpectError('Expected save data source config to fail when Prometheus server is not running') ).not.toBeOK(); }); test('valid credentials should return a 200 status code', async ({ createDataSourceConfigPage, page }) => { const configPage = await createDataSourceConfigPage({ type: 'prometheus' }); configPage.mockHealthCheckResponse({ status: 200 }); await page.getByPlaceholder('http://localhost:9090').fill('http://localhost:9090'); await expect( configPage.saveAndTest(), formatExpectError('Expected data source config to be successfully saved') ).toBeOK(); }); }); test.describe('test data source with frontend only health check', () => { test('valid credentials should display a success alert on the page', async ({ createDataSourceConfigPage, page, }) => { const configPage = await createDataSourceConfigPage({ type: 'zipkin' }); configPage.mockHealthCheckResponse({ message: 'Data source is working', status: 'OK' }, 200); await page.getByPlaceholder('http://localhost:9411').fill('http://localhost:9411'); await expect(configPage.saveAndTest()).toBeOK(); await expect( configPage, formatExpectError('Expected data source config to display success alert after save') ).toHaveAlert('success', { hasNotText: 'Datasource updated' }); }); }); } );