grafana/e2e/various-suite/loki-editor.spec.ts
Matias Chomicki d3a1faad1a
Loki Config: Add missing section header + minor improvements (#66216)
* Loki config: add missing section title to max lines

* Loki config: minor improvements to datasource test messages

* Chore: remove new line

* Loki: further improve error messages

* Alerting Settings: Add missing tooltip

* Update packages/grafana-ui/src/components/DataSourceSettings/AlertingSettings.tsx

* Update alerting label and tooltip

* Update packages/grafana-ui/src/components/DataSourceSettings/AlertingSettings.tsx

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Alerting settings: Increase label width

* Loki config: update success message

---------

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
2023-04-14 12:39:54 +03:00

100 lines
3.3 KiB
TypeScript

import { e2e } from '@grafana/e2e';
const dataSourceName = 'LokiEditor';
const addDataSource = () => {
e2e.flows.addDataSource({
type: 'Loki',
expectedAlertMessage:
'Unable to connect with Loki (Failed to call resource). Please check the server logs for more details.',
name: dataSourceName,
form: () => {
e2e.components.DataSource.DataSourceHttpSettings.urlInput().type('http://loki-url:3100');
},
});
};
e2e.scenario({
describeName: 'Loki Query Editor',
itName: 'Autocomplete features should work as expected.',
addScenarioDataSource: false,
addScenarioDashBoard: false,
skipScenario: false,
scenario: () => {
addDataSource();
e2e().intercept(/labels?/, (req) => {
req.reply({ status: 'success', data: ['instance', 'job', 'source'] });
});
e2e().intercept(/series?/, (req) => {
req.reply({ status: 'success', data: [{ instance: 'instance1' }] });
});
// Go to Explore and choose Loki data source
e2e.pages.Explore.visit();
e2e.components.DataSourcePicker.container().should('be.visible').click();
e2e().contains(dataSourceName).scrollIntoView().should('be.visible').click();
e2e().contains('Code').click();
// Wait for lazy loading
const monacoLoadingText = 'Loading...';
e2e.components.QueryField.container().should('be.visible').should('have.text', monacoLoadingText);
e2e.components.QueryField.container().should('be.visible').should('not.have.text', monacoLoadingText);
// adds closing braces around empty value
e2e.components.QueryField.container().type('time(');
e2e()
.get('.monaco-editor textarea:first')
.should(($el) => {
expect($el.val()).to.eq('time()');
});
// removes closing brace when opening brace is removed
e2e.components.QueryField.container().type('{selectall}{backspace}avg_over_time({backspace}');
e2e()
.get('.monaco-editor textarea:first')
.should(($el) => {
expect($el.val()).to.eq('avg_over_time');
});
// keeps closing brace when opening brace is removed and inner values exist
e2e.components.QueryField.container().type(
'{selectall}{backspace}time(test{leftArrow}{leftArrow}{leftArrow}{leftArrow}{backspace}'
);
e2e()
.get('.monaco-editor textarea:first')
.should(($el) => {
expect($el.val()).to.eq('timetest)');
});
// overrides an automatically inserted brace
e2e.components.QueryField.container().type('{selectall}{backspace}time()');
e2e()
.get('.monaco-editor textarea:first')
.should(($el) => {
expect($el.val()).to.eq('time()');
});
// does not override manually inserted braces
e2e.components.QueryField.container().type('{selectall}{backspace}))');
e2e()
.get('.monaco-editor textarea:first')
.should(($el) => {
expect($el.val()).to.eq('))');
});
/** Runner plugin */
// Should execute the query when enter with shift is pressed
e2e.components.QueryField.container().type('{selectall}{backspace}{shift+enter}');
e2e().get('[data-testid="explore-no-data"]').should('be.visible');
/** Suggestions plugin */
e2e.components.QueryField.container().type('{selectall}av');
e2e().contains('avg').should('be.visible');
e2e().contains('avg_over_time').should('be.visible');
},
});